• Tidak ada hasil yang ditemukan

LAPORAN ALGORITMA DAN STRUKTUR DATA II (6)

N/A
N/A
Protected

Academic year: 2018

Membagikan "LAPORAN ALGORITMA DAN STRUKTUR DATA II (6)"

Copied!
13
0
0

Teks penuh

(1)

LAPORAN PRAKTIKUM

ALGORITMA DAN STRUKTUR DATA II

MODUL I

LINKED LIST

Disusun Oleh : Syukur Jaya Mendrofa

201501072

Kelas: C

Dosen Pengampu :

Oskar Ika Adi Nugroho, ST., MT

JURUSAN SISTEM INFORMASI

SEKOLAH TINGGI ILMU KOMPUTER “YOS SUDARSO”

PURWOKERTO

(2)

BAB I

Dasar Teori

SEJARAH SINGKAT LINK LIST

Dikembangkan tahun 1955-1956 oleh Allen Newell, Cliff Shaw dan Herbert Simon di RAND Corporation sebagai struktur data utama untuk bahasa Information Processing Language (IPL). IPL dibuat untuk mengembangkan program artificial intelligence, seperti pembuatan Chess Solver.

PENGERTIAN LINK LIST

Linked list (list bertaut) adalah salah satu struktur data dasar yang sangat fundamental dalam bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat menimpan datanya kapanpun dibutuhkan. Linked list mirip dangan array, kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).

JENIS-JENIS LINKED LIST

 Singly linked list

 Double linked list

 Circular Linked List

Linked list (one way list) adalah suatu kumpulan elemen data (yang disebut sebagai node) dimana urutannya ditentukan oleh suatu pointer.

Setiap elemen (node) dari suatu linked list terdiri atas dua bagian, yaitu :

o INFO, berisi informasi tentang elemen data yang bersangkutan.

o NEXT (link field/next pointer field), berisi alamat dari elemen (node) selanjutnya yang dituju.

Berikut ini sebuah contoh linked list yang terdiri atas 4 node :

info next info next info next info next start

node ke-1 node ke-2 node ke-3 node ke-4 null

(3)

BAB II

struct Node //tipe data abstrak “struct” dengan nama Node {

int data; //nama dan tipe data dari member “Node”

struct Node* next; // nama dan tipe data dari member “Node”, menggunakan pointer.

};

struct Node* head; // variabel global yang bisa dipanggil dimana saja, didalam dan diluar fungsi utama.

void Insert(int x){

struct Node* temp = (Node*)malloc(sizeof(struct Node)); // mengalokasikan memory yang akan digunakan yaitu sesuai dengan jumlah atau nilai x yang akan di masukkan.

Node* temp sama artinya dengan new Node ( ); yaitu mengalokasikan memory node baru yang akan masuk berikutnya.

temp->data = x;

temp->next = head;

head = temp; }

void print(){

struct Node* temp = head; printf("Senarainya adalah : ");

while (temp != NULL)

{

printf("%d", temp->data);

temp = temp->next;

}

(4)

}

int main()

{

head = NULL;//listnya masih kosong

printf("Berapa panjang listnya? \n"); int n, i, x;

scanf("%d", &n);

for (i = 0; i < n; i++){

printf("Masukan bilangan listnya \n");

scanf("%d", &x);

Insert(x); //memanggil fungsi void Insert(int x) print(); // memanggil fungsi void print( )

}

system("pause");

return 0; }

(5)

Analisa program 01

Program ini merupakan program untuk menyisipkan simpul baru, dimana simpul baru selalu disisipkan pada awal senarai berantai atau setelah head senarai :

Masuk pada fungsi utama :

int main() {

head = NULL

printf("Berapa panjang listnya? \n"); //memasukkan berapa panjang list yang akan dibuat, di sini saya memasukkan 5

Sehingga memori mengalokasikan sebanyak 5. Jadi n = 5 sehingga pengulangan for akan berhenti apabila i < n atau 0 < 0 False, jadi pengulangannya adalah 5,4,3,2,1 sebanyak 5 kali.

for (i = 0; i < n; i++){

printf("Masukan bilangan listnya \n"); scanf("%d", &x);

(6)

Proses memasukkan bilangan pertama yaitu angka 5.

Sehinga output menampilkan Senarainya adalah : 5

Proses menyisipkan bilangan 4.

(7)

Proses menyisipkan bilangan 3.

(8)
(9)

Proses menyisipkan bilangan 2.

Sehinga output menampilkan Senarainya adalah : 2345

Proses menyisipkan bilangan 1.

(10)

Fungsi void print ( ) merupakan fungsi untuk menampilkan tiap simpul dan senarai yang telah dan akan dimasukkan:

struct Node* temp = head; yaitu memanggil/mengalokasikan alamat/link tiap simpul yang baru akan disisipkan dimana alamat tersebut diinisialisasikan menjadi kepala atau head.

while (temp != NULL) merupakan proses pengulangan yang akan memanggil data dari link tiap simpul yang baru disisipkan.

printf("%d", temp->data) menampilkan data dari link-link semua simpul yang telah disisipkan, ini merupakan bagian dari proses pengulangan while.

temp = temp->next; menginisialisasi alamat/link ke simpul berikutnya yang akan dimasukkan, ini merupakan bagian dari proses pengulangan while.

(11)

Program 02 :

void Insert(int data, int n){

Node* temp1 = new Node();

temp1->data = data;

Node* temp2 = head; for (int i = 0; i < n - 2; i++){

Node* temp = head;

while (temp != NULL){

(12)

}

printf("\n");

}

int main()

{

head = NULL;//listnya masih kosong

Insert(2, 1); //list : 2

Insert(3, 2); //list : 2,3 Insert(4, 1); //list : 4,2,3

Insert(5, 2); //list : 4,5,2,3

print();

 Pertama sekali program masuk pada fungsi utama yaitu head = NULL; yaitu menyatakan nilai dari head = null.

 Kemudian memanggil fungsi void Insert(int data, int n) Insert(2, 1); dimana nilai data=2 dan n=1. Angka 2 menjadi kepala sekaligus ekor pada tahap pertama ini. Karena n=1.

 Kemudian Insert(3, 2); dimana nilai data=3 dan n=2. Angka 2 menjadi kepala dan ekor yaitu data=3 dari tahap pertama. Karena n=2.

(13)

 Kemudian Insert(5, 2); dimana nilai data=5 dan n=2. Angka 4 menjadi kepala dan posisi tengah yaitu 5 dan 2, ekornya yaitu data=3 dari tahap pertama. Karena n=2.

BAB III

Kesimpulan

Linked List atau Struktur Berkait atau Senarai Berantai, yaitu cara menyimpan data secara terstruktur sehingga programmer dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data kapan saja diperlukan. Sebuah pointer menunjuk simpul terkiri dan setiap simpul mempunyai pointer yang menunjuk ke simpul berikutnya. Pointer pada simpul terakhir tidak menunjuk kemana-mana maka berisi NULL. Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list.

Simpul pada linked list terdiri dari dua komponen utama yaitu:

1. Data yaitu bisa berupa satu elemen data atau beberapa elemen data. 2. Pointer yang menunjuk ke simpul lain.

Ada beberapa aturan yang didefinisikan pada operasi didalam linked list, yaitu :

Jika P adalah suatu variabel pointer, maka nilainya adalah alamat atau lokasi dari variabel lain yang dituju.

Operasi yang didefinisikan pada suatu variabel pointer adalah : 1. Test apakah sama dengan NULL.

2. Test untuk kesamaan dengan variabel pointer lain. 3. Menetapkan sama dengan NULL.

4. Menetapkan menuju ke node lain.

Notasi yang didefinisikan sehubungan dengan operasi diatas adalah : 1. NODE(P), artinya node yang ditunjuk oleh pointer P.

2. INFO(P), artinya nilai INFO dari node yang ditunjuk pointer P.

Ada dua hal yang menjadi kerugian dengan representasi suatu data dengan linked list ini, yaitu

 Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.

 Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked list.

Sedangkan keuntungannya adalah :

 Jenis data yang berbeda dapat di-link.

Referensi

Dokumen terkait

Otitis media akut dapat dise#a#kan invasi virus Campak ke dalam telin$a ten$a!% Gendan$ telin$a #iasana !peremia pada fase prodormal dan stadium erupsi% 4ika terjadi invasi

Aspek Baik sekali (4) Baik (3) Cukup (2) Perlu Bimbingan (1) Memahami posisi dan peran Indonesia dalam kerja sama di bidang ekonomi, politik, sosial, budaya,

Mengawali karir dengan bergabung di Bank Ekspor Impor Indonesia / Bank Exim pada tahun 1969 sebagai pegawai pimpinan dan menjabat kepala cabang di beberapa daerah di

Manajemen akrual sebagaimana yang dijelaskan oleh Ayres mengenai proses perekayasaan periode pendapatan dan biaya, menurut etika Islam tidak etis dan tidak boleh dilakukan

Masyarakat merupakan suatu bentuk kehidupan bersama untuk jangka waktu yang cukup lama sehingga menghasilkan suatu adat istiadat, menurut Ralph Linton masyarakat

Sehingga pada permasalahan ini adalah bagaimana pengaruh dari berbagai macam model alat berat terhadap nilai mechanical availability, serta untuk melihat jenis model mana

Mengingat masih banyaknya pelajar yang belum mengerti tentang kesehatan reproduksi, sangatlah penting untuk dilakukan penyuluhan dengan harapan dapat mengubah pengetahuan dan

Kalau head tidak bernilai NULL alias telah dimiliki satu atau lebih node, yang pertama dilakukan adalah menghubungkan pointer next dari node aktif (curr) ke node yang baru saja