LINKED LIST (List linier)
Definisi Linked list adalah sekumpulan komponen yangsaling berhubungan (berantai) secara berurutan dengan bantuan pointer Link data data data Null Simpul / node
Linked list terdiri dari 2 komponen: data : satu atau lebih field yang yang berisi data di linked list. Link : satu pointer yang menunjuk ke data berikutnya. Link data Simpul / node
Deklarasi Link list struct node { } int info; struct node *nextPtr;
Ilustrasi menyambung node a dgn b: Link //deklarasi Link List Node *a; Node *nextptr; a = new Node; //pendeklarasian dengan menggunakan keyword new //menyambung link list Int data ; a -> data = 1; a->nextptr = NULL; data nextptr New node 1 Null Node a
//pendeklarasian node b Node * b; b->data = 2; b->nextptr = NULL;
//menyambung node a dan node b a->nextptr = b; Link Link 1 nextptr 2 null Node a Node b
Operasi-Operasi Linked List Buat List Tambah node(simpul) Hapus node(simpul) Cari node(simpul) Melacak list (Membaca node-node)
Membuat linked list Syarat dalam membuat linked list: Harus mempunyai ujung awal dari simpul dan ujung akhir. Ujung awal, untuk mengetahui awal dari simpul. Ujung akhir untuk mengetahui sampai dimana linked list berakhir awal Link data data data Null akhir Simpul
Tambah Node/Simpul Fungsi menambah simpul di belakang. Langkah-langkahnya: membuat simpul baru kemudian diisi info baru. simpul paling akhir dihubungkan ke simpul baru. penunjuk pointer akhir diarahkan ke simpul simpul baru.
Ilustrasi menambah simpul baru pointer awal akhir Baru D A C N I. awal akhir Baru D A C N II. awal akhir Baru D A C N III.
Procedure menambah simpul void tambahnode(NODPTR *s, NODPTR t, NODPTR p) { if (p==NULL) { t -> next = *s; *s = t; } else { t -> next = p -> next; p ->next = t;
Membaca isi Simpul Pertama kali kita atur supaya pointer bantu menunjuk ke pointer awal. Setelah isi simpul terbaca, pointer bantu kita garakkan ke kanan untuk membaca simpul berikut. Proses ini kita ulangi sampai pointer bantu berimpitan dengan pointer akhir
Ilustrasi membaca simpul Bantu awal akhir AA A B C I.
Procedure membaca simpul Procedure baca; Var Bantu : simpul; Begin Bantu :=Awal; Repeat write(Bantu^.info); Bantu :=Bantu^.Berikut; Until Bantu :=nil; End;
Cara menghapus Pertama kali kita letakkan pointer bantu di sebelah kiri simpul yang dihapus (Gb.I) Simpul yang dihapus kita tunjuk dengan simpul lain misal: hapus. (Gb.I) Pinter pada simpul bantu , kita arahkan pada simpul yang ditunjuk oleh pointer hapus( Gb. II) Simpul yang ditunjuk oleh pointer hapus kita dispose(Gb. III)
Ilustrasi awal Bantu akhir Hapus D A B C D Gb. I awal Bantu akhir Gb.II Dispose awal Bantu akhir D A C D Gb.III
Procedure Hapus_Tengah(Var L : Pointer; X : Integer); Var Bantu,Hapus : Pointer; Begin Bantu := L; New(Hapus); While Bantu^.Berikutnya <> nil Do if Bantu^.Berikutnya^.nilai = X then begin Hapus:=Bantu^.Berikutnya; Bantu^.Berikutnya:=Hapus^.Berikutnya; dispose(Hapus); End;
The End