1

11
1. Pengertian Linked List Linked list tidak lain adalah suatu struktur data yg merupakan suatu rangkaian atau daftar record berjenis sama. Kemudian dihubungkan melalui bantuan pointer. Pengalokasian daftar dapat dilakukan secara dinamis sehingga isi dari daftar dapat dimanipulasi. Untuk memahami linked list, terlebih dahulu anda harus tahu konsep pointer dan pengalokasian memori 2. Pengertian Header Linked List Header linked list adalah suatu list yang mengandung suatu simpul khusus yang terletak pada bagian awal dari list yang disebut simpul header. Berikut ini 2 jenis header linked list yang biasa digunakan yakni : 1. Grounded Header List : header list yang simpul terakhirnya berisi penuding NULL 2. Circular Header List : header list yang simpul terakhirnya menuding ke simpul header dari list tersebut. LINK[START] = NULL menunjukkan Grounded Header List hampa LINK[START] = START menunjukkan Circular Header List hampa Grounded Header List X Header

Transcript of 1

Page 1: 1

1. Pengertian Linked ListLinked list tidak lain adalah suatu struktur data yg merupakan suatu rangkaian atau daftar record berjenis sama. Kemudian dihubungkan melalui bantuan pointer. Pengalokasian daftar dapat dilakukan secara dinamis sehingga isi dari daftar dapat dimanipulasi. Untuk memahami linked list, terlebih dahulu anda harus tahu konsep pointer dan pengalokasian memori

2. Pengertian Header Linked ListHeader linked list adalah suatu list yang mengandung suatu simpul khusus yang terletak pada bagian awal dari list yang disebut simpul header. Berikut ini 2 jenis header linked list yang biasa digunakan yakni :

1. Grounded Header List : header list yang simpul terakhirnya berisi penuding NULL2. Circular Header List : header list yang simpul terakhirnya menuding ke simpul header dari list

tersebut.

LINK[START] = NULL menunjukkan Grounded Header List hampaLINK[START] = START menunjukkan Circular Header List hampa

Grounded Header List

Circular Header List

XHeader Node

XHeader Node

Page 2: 1

Mendefinisikan Linked List dalam Pascal :

Type nodeptr = ^ nodetypenametype = packed array [1..10] of char;nodetype = record

info : nametype;next : nodeptr;

end;Var p : nodeptr;

Node : nodetype;

Catatan :

P ^.Info : Info dari node yang ditunjuk oleh pointer P

P ^.Next : Next dari node yang ditunjuk oleh pointer P

P := nil : pointer P berisi nilai NullNew(P) : fungsi Getnode dalam PascalDispose(P): Procedure Freenode dalam Pascal

Menghapus sebuah node dalam Pascal

procedure removaf(p:nodeptr, var out : nametype);var q : nodeptr;begin

if (p^.Next = nil)then UNDERFLOW-CONDITIONelse begin

q := p^.Next;p^.Next := q^.Next;out := q^.Info;dispose(q);end;

end;

Menyisipkan sebuah node dalam Pascal

procedure insereaf(p:nodeptr, in : nametype);var q : nodeptr;begin

New(q);q^.Info := in;q^.Next := p^.Next;p^.Next := q;

end;

Penyisipan pada akhir dari suatu Linked List (Linked List Antrian) dalam Pascal

procedure inserend(first:nodeptr, in : nametype);var newnode, q : nodeptr;

Page 3: 1

beginNew(newnode);newnode^.Info := in;newnode^.Next := nil;q:= first;do while (q^.next <> nil)

q := q^.Next;q^.Next := newnode;

end;

Jika sebuah Linked List digunakan untuk menggambarkan suatu antrean, dalam hal ini pointer dapat langsung menunjuk ke rear/akhir dari antrean untuk menghindari pengulangan melalui semua node untuk menemukan node terakhir.

procedure inserend(in : nametype, var rear:nodeptr,);var newnode : nodeptr;begin

New(newnode);newnode^.Info := in;newnode^.Next := nil;rear^.Next := newnode;rear := newnode;

end;

Procedure Getnode(New)If Avail = Nullthen out-of-free-space

else beginGetnode := AvailAvail := Next(Avail);Next(Getnode) := Null;

end;

3. Pengertian Dobly Linked List

Double Linked List (DLL) adalah suatu cara pengolahan data yang bekerja dengan record dalam jumlah besar, sehingga membutuhkan alokasi memori dinamis yang besar pula. DLL biasanya digunakan pada saat alokasi memori konvensional tidak lagi bisa diandalkan. Sedangkan bekerja dengan data yang besar tidak dapat dihindari lagi, karena tidak jarang pula, data besar tersebut memiliki hubungan yang erat.Di dalam DLL tidak hanya sekadar menampilkan setiap record-nya, melainkan dapat pula menambahkan record, menghapus beberapa record sesuai keinginan pengguna, sampai mengurutkan record. Kondisi tersebut memungkinkan dimilikinya satu rantai data yang panjang dan saling berhubungan.Pada Double Linked List, setiap node memiliki dua buah pointer ke sebelah kiri (prev) dan ke sebelah kanan (next). Gambar 1 memperlihatkan sebuah node dari Double Linked List.Bertambah lagi komponen yang akan digunakan. Apabila dalam Single Linked List hanya memiliki head, curr dan node, maka untuk Double Linked List, ada satu penunjuk yang

Page 4: 1

berfungsi sebagai akhir dari list: tail. Bagian kiri dari head akan menunjuk ke NULL. Demikian pula dengan bagian kanan dari tail. Setiap node saling terhubung dengan pointer kanan dan kiri. Gambar 2 memperlihatkan contoh Double Linked List.

* MACAM-MACAM DOUBLE LINKED LIST1. DOUBLE LINKED LIST CIRCULAR (DLLC)

Double Linked List Circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya (next), 1 field menunjuk pointer sebelumnya (prev), serta sebuah file yang berisi data untuk node tersebut. Double Linked List Circular pointer next dan prev-nya menunjuk ke dirinya sendiri secara circular.

Bentuk Node DLLCPengertian:Double : field pointer-nya terdiri dari dua buah dan dua arah, yaitu prev dan next.Linked List : node-node tersebut saling terhubung satu sama lain.Circular : pointer next dan prev-nya menunjuk ke dirinya sendiri.

2. DOUBLE LINKED LIST NON CIRCULAR (DLLNC)Double Linked List Non Circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya (next), 1 field menunjuk pointer sebelumnya (prev), serta sebuah field yang berisi data untuk node tersebut.Double Linked List Non Circular pointer next dan prev nya menunjuk ke NULL. Dengan adanya 2 pointer penunjuk, next dan prev, DLLNC sangat flexible dibandingkan dengan SLLNC.

Bentuk Node DLLCPengertian:Double : field pointer-nya terdiri dari dua buah dan dua arah, yaitu prev dan next.Linked List : node-node tersebut saling terhubung satu sama lain.Non Circular : pointer next dan prev-nya menunjuk ke NULL.

Ilustrasi Double Linked List Non Circular

Setiap node pada linked list mempunyai field yang berisi data dan pointer ke node berikutnya dan ke node sebelumnya. Untuk pembentukan node baru, mulanya pointer next dan prev akan menunjuk ke nilai NULL. Selanjutnya pointer prev akan menunjuk ke node sebelumnya, dan pointer next akan menunjuk ke node selanjutnya pada list.

4. Definisi Dasar Graph

Graph kumpulan simpul-simpul yang dihubungkan dengan garis. Simpul biasa dinyatakan dengan istilah verteks dan garis biasa dinyatakan dengan istilah edges atau busur.

Page 5: 1

JENIS GRAPH

Pengelompokkan graf dapat didasarkan pada ada tidaknya sisi ganda atau sisi kalang, pada jumlah simpul, atau berdasarkan orientasi arah pada sisi.

Berdasarkan ada tidaknya gelang atau sisi ganda pada suatu graf, secara umum graf dapat digolongkan menjadi dua jenis :

1. Graph sederhana

Graf yang tidak mengandung gelang maupun sisi ganda dinamakan graf sederhana. Jaringan komputer merupakan contoh aplikasi graf sederhana.

2. Graph tak sederhana

Dibagi menjadi 2, yaitu graf ganda dan graf semu. Graf ganda ialah graf yang mengandung sisi ganda. Graf semu ialah graf yang mengandung gelang.

Berdasarkan jumlah simpul pada suatu graf, secara umum graf dapat digolongkan menjadi dua jenis :

1. Graf berhingga

Ialah graf yang jumlah simpulnya berhingga.

2. Graf tak berhingga

Ialah graf yang jumlah simpulnya tak berhingga.

Berdasarkan orientasi arah pada sisi, secara umum graf dibedakan atas dua jenis :

1. Graf berarah

Graf yang setiap sisinya diberikan orientasi arah disebut graf berarah.

2. Graf tak berarah

Graf yang sisinya tidak mempunyai orientasi arah disebut graf tak berarah.

Terminologi Dasar

Banyak terminologi yang akan sering digunakan dalam pembahasan graf, diantaranya :

1. Bertetangga (Adjacent)

Dua buah simpul pada graf tak-berarah G dikatakan bertetangga jika keduanya terhubung langsung dengan sebuah sisi.

Page 6: 1

2. Bersisian (Incident)

Untuk sembarang sisi e = (vj, vk), sisi e dikatakanbersisian dengan simpul vj dan vk.

3. Simpul Terpencil (Isolated Vertex)

Simpul yang tidak mempunyai sisi yang bersisian dengannya disebut simpul terpencil.

4. Graf Kosong (Null Graph atau Empty Graph)

Graf yang himpunan sisinya merupakan himpunan kosong disebut graf kosong.

5. Derajat (Degree)

Derajat suatu simpul pada graf tak berarah adalah jumlah sisi yang bersisian dengan simpul tersebut. Pada graf berarah, derajat suatu simpul ialah jumlah busur yang masuk ke simpul ditambah dengan jumlah busur yang keluar dari simpul.

6. Lintasan (Path)

Lintasan yang panjangnya n dari simpul awal vo ke simpul tujuan vn di dalam graf G ialah barisan berselang-seling simpul-simpul dan sisi-sisi yang berbentuk v0, e1, v1, e2, v2, … , vn-1, en, vn,

sedemikian sehingga e1 = (v0,v1), e2 = (v1,v2), … , en = (vn-1,vn) adalah sisi-sisi dari graf G. Panjang lintasan adalah jumlah sisi dalam lintasan tersebut.

7. Siklus (Cycle) atau Sirkuit (Circuit)

Lintasan yang berawal dan berakhir pada simpul yang sama disebut sirkuit atau siklus. Panjang sirkuit adalah jumlah sisi di dalam sirkuit tersebut.

8. Terhubung (Connected)

Graf tak berarah G disebut graf terhubung jika untuk setiap pasang simpul vi dan vj dalam himpunan V terdapat lintasan dari vi ke vj. Jika tidak, maka graf G tak terhubung.

9. Upagraf (Subgraph) dan Komplemen Upagraf

Misalkan G = (V,E) adalah sebuah graf. G1 = (V1, E1) adalah upagraf dari G jika V1 ⊆ V dan E1 ⊆ E. Komplemen dari upagraf G1 terhadap graf G adalah graf G2 = (V2, E2) sedemikian sehingga E2 = E – E1 dan V2 adalah himpunan simpul yang anggota-anggota E2 bersisian dengannya.

10. Upagraf Merentang (Spanning Subgraph)

Upagraf G1 = (V1, E1) dari G = (V,E) dikatakan upagraf merentang jika V1 = V (yaitu G1 mengandung semua simpul dari G)

11. Cut-Set

Cut-set dari graf terhubung G adalah himpunan sisi yang bila dibuang dari G menyebabkan G tidak terhubung. Jadi, cut-set selalu menghasilkan dua buah komponen terhubung. Nama lain untuk cut-set ialah bridge (jembatan). 12. Graf Berbobot (Weighted Graph) Graf berbobot

Page 7: 1

adalah graf yang setiap sisinya diberi sebuah harga (bobot). Graf inilah yang digunakan untuk mencari lintasan terpendek.

5. pengertian Graph Transversal

6. Pengertian Bubble Sort

Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci akan dengan lambat menggelembung ke posisinya yang tepat.

Kelebihan Bubble Sort

Metode Buble Sort merupakan metode yang paling simpel Metode Buble Sort mudah dipahami algoritmanya

Kelemahan Bubble Sort

Meskipun simpel metode Bubble sort  merupakan metode pengurutanyang paling tidak efisien.  Kelemahan buble sort adalah pada saat mengurutkan data yang sangat besar akan mengalami kelambatan luar biasa, atau dengan kata lain kinerja memburuk cukup signifikan ketika data yang diolah jika  data cukup banyak. Kelemahan lain adalah jumlah pengulangan akan tetap sama jumlahnya walaupun data sesungguhnya sudah cukup terurut. Hal ini disebabkan setiap data dibandingkan dengan setiap data yang lain untuk menentukan posisinya.

7. Pengertian Quick Sort

Apa itu QUICK SORT???

PENGERTIAN!!!

Metode Quick Sort adalah suatu metode yang digunakan dalam C++. Metode ini banyak digunakan dalam proses sorting karena mudah diimplementasikan dan prosesnya sangat cepat.

Metode quick sort memiliki langkah-langkah sebagai berikut:

1. Select

* pertama kita pilih elemen yang ditengah sebagai pivot (pusat), misalkan X.

2. Partition

* kemudian semua elemen tersebut disusun dengan menempatkan X pada posisi j sedemikian rupa sehingga elemen disebelah kiri lebih kecil dari X dan elemen sebelah kanan lebih besar dari X.

3. Rekursif

* kemudian proses diulang untukbagian kiri dan kanan elemen X dengan cara yang sama dengan langkah pertama sampai data terurut dengan benar.

Page 8: 1