POINTER. 100 Alamat memori. Gambar 5.1. Struktur berkait
|
|
|
- Utami Yuwono
- 9 tahun lalu
- Tontonan:
Transkripsi
1 LINKED LIST. STRUKTUR BERKAIT Pada pembicaraan kita dalam Bab, telah disinggung sekilas tentang sejenis struktur yang dibentuk dengan cara mengaitkan struktur yang lebih sederhana. Perhatikan Gambar.. A POINTER B POINTER Alamat memori Gambar.. Struktur berkait Salah satu di antara struktur berkait tersebut adalah yang disebut sebagai linear linked list atau one-way list. Selain itu dikenal pula beberapa jenis struktur berkait yang lain seperti linked-stack, linked-queue, doubly linked-list, linked-generalized list dan sebagainya.
2 Kali ini kita bahas secara sederhana bagaimana operasi penyisipan atau insertion dan operasi penghapusan atau deletion bekerja pada struktur berkait. Kita mulai dengan struktur singly linked-list atau singkatnya linked list. Linked-list, yang kerap kali disebut pula one-way List, adalah koleksi linear dari elemen data yang disebut simpul atau node. Cara melinearkan urutan, adalah dengan menggunakan penuding atau pointer. Dalam hal ini, setiap simpul terdiri atas dua bagian. Bagian pertama berisi informasi data tersebut, sedangkan bagian kedua merupakan field, link, atau nextpointer. Link inilah yang menghubungkan satu elemen data ke elemen data lainnya, sehingga urutan elemen data tersebut membentuk suatu linear list. Field link ini berisi alamat dari simpul berikutnya dalam list. Ia bernilai bila link tersebut tidak menuding ke data (simpul) lainnya. Penuding ini disebut penuding nol. Gambar. merupakan diagram secara skematik dari sebuah linked list dengan buah simpul. Setiap Simpul digambarkan sebagai dua kotak, Kotak kiri menyajikan bagian informasi (dapat berupa sebuah field NAMA, ataupun field NOMOR-POKOK, ataupun dapat pula berupa sebuah record). Kotak kanan menyajikan field nextpointer. Dari kotak kanan ini tergambar panah mengarah ke simpul berikut. Penuding nol adalah penuding ke simpul akhir dari list yang disajikan dengan tanda X. Nextpointer field of third node x Information part of third node Gambar. Linked list dengan simpul (nodes) Linked list juga mengandung sebuah variabel penuding list, yang biasanya diberi nama, yang berisi alamat dari simpul pertama dalam list. Di sini tergambar panah dari mengarah ke simpul pertama tersebut. Hal khusus dapat terjadi, yakni list tidak mengandung sebuah simpulpun. List semacam itu disebut list hampa atau list nol. List ini disajikan dengan menempatkan penuding nol pada variabel. Contoh. Pada bangsal sebuah rumah sakit terdapat tempat tidur. Sembilan di antaranya, telah ditempati pasien, seperti digambarkan pada Gambar.. Kita hendak membuat list nama
3 para pasien tersebut diurut secara alfabetik. Untuk itu kita buat sebuah linked list, dengan penuding NEXT. Variable kita gunakan untuk menyatakan lokasi pasien pertama dalam list. Jadi berisi, karena pasien pertama tersebut, yakni Adam, menempati tempat tidur nomor. Selanjutnya penuding dari Adam bernilai, karena pasien kedua dalam list adalah Deni, menempati tempat tidur nomor, demikian seterusnya. Akhirnya, untuk pasien terakhir, Samuel, penudingnya merupakan penuding nol (dinyatakan dengan bilangan ). Gambar.. Sortir data dalam linked list. PENYAJIAN LINKED LIST DALAM MEMORI Misalkan LIST adalah sebuah linked list. Kalau tidak disebutkan lain, LIST akan disajikan dalam memori adalah dengan cara sebagai berikut. Kita bentuk larik INFO(K) dan LINK(K), berturut-turut untuk menyajikan bagian informasi dan field nextpointer. Juga kita pakai sebuah variabel untuk menyimpan alamat dari elemen LIST. Pada
4 bagian akhir dari LIST, nextpointer bernilai NULL. Apabila tidak disebutkan, nilai NULL adalah, dan nilai dari subscript larik INFO serta LINK selalu diambil positif. Contoh linked list berikut memperlihatkan bahwa elemen tak perlu menempati posisi yang berdampingan pada larik INFO serta LINK. Juga lebih dari satu linked list dapat disimpan dalam kedua larik yang sama tersebut di atas. Contoh. Gambar. menggambarkan suatu linked list dalam memori. Data dalam larik INFO(K) adalah sebuah karakter tunggal. Dengan setiap kali kita mengubah nilai larik LINK(K) serta, kita dapat membentuk linked list lain, yang kalau dibaca elemennya akan merupakan sebuah string atau untai. String yang dinyatakan oleh Gambar. tersebut adalah NO EXIT. =, jadi INFO() = N adalah karakter pertama yang dikunjungi, LNK() =, jadi INFO() = O adalah karakter kedua, LNK() =, jadi INFO() = (blank) adalah karakter ketiga, LNK() =, jadi INFO() = E adalah karakter keempat, LNK() =, jadi INFO() = X adalah karakter kelima, LNK() =, jadi INFO() = I adalah karakter keenam, LNK() =, jadi INFO() = T adalah karakter ketujuh, LNK() =, null pointer, list berakhir. INFO LINK I O E T X N Gambar.. Linked list yang menghasilkan string
5 Contoh. Pada contoh ini diperlihatkan dua buah linked list, ALG dan GEOM, yang berturut-turut berisi nilai testing mata kuliah Algoritma dan Geometri, dapat tersimpan bersama dalam larik TEST dan LINK yang sama. Perhatikan bahwa nama dari list sekaligus digunakan sebagai variabel penuding. Di sini penuding ALG berisi nilai, yakni lokasi dari simpul pertama list ALG, sedangkan penuding GEOM berisi nilai, yakni lokasi simpul pertama dari list GEOM. Mengikuti penuding tersebut, dapat dilihat bahwa list ALG berisi nilai-nilai : dan list GEOM berisi nilai-nilai ALG TEST LINK GEOM Gambar.. Contoh linked list hasil testing mata kuliah
6 Contoh. Lihat Gambar.. Pandang suatu agen penjualan yang mempunyai orang broker (perantara). Setiap broker mempunyai list customer (pelanggan) masing-masing. Data dapat diorganisir seperti pada Gambar.. Di sini keempat list pelanggan digabung dalam satu linked list dengan larik CUSTOMER berisi nama pelanggan dan larik LINK merupakan nextpointer. Nama broker ditempatkan dalam larik BROKER, dan digunakan pula variabel penuding dalam bentuk larik POINT, sedemikian sehingga POINT(K) menuding ke lokasi dari simpul pertama BROKER(K). Dapat kita lihat bahwa broker Bond mempunyai pelanggan berturut-turut Grant, Scott,Vito, Katz Di sana, Tall tidak mempunyai pelanggan, karena POINT()=. Kita dapat berbicara secara lebih umum, yakni bahwa bagian informasi dari setiap simpul merupakan sebuah record, dengan lebih dari satu satuan data. Dalam kasus ini, kita harus menyimpan data tersebut dalam bentuk struktur record ataupun dalam bentuk koleksi larik sejajar. Perhatikan contoh berikut : Contoh. Lihat Gambar.. Pandang berkas personalia dari sebuah perusahaan kecil, yang terdiri dari record orang pegawai, dengan field NAMA, SSN (Social Security Number), SEX dan Gaji per bulan (monthly salary) Gambar tersebut memperlihatkan bagaimana berkas diorganisir sebagai linked list yang terurut (alfabetik), dengan menempatkan informasi dalam empat buah larik sejajar NAMA, SSN, SEX, dan SALARY, serta menggunakan pula larik LINK sebagai nextpointer, dan variabel yang menuding record pertama. Di sana digunakan sebagai penuding nol.. KUNJUNGAN LINKED LIST Pandang sebuah linked list, LIST yang tersimpan dalam memori berupa larik INFO dan LINK, dilengkapi dengan variabel penuding, yang berfungsi menuding lokasi simpul pertama dari list, dan NULL yang digunakan untuk menyatakan berakhirnya list. Sekarang kita akan melakukan traversal atau kunjungan simpul list, sesuai urutan, untuk memproses setiap simpul tepat satu kali. Algoritma traversal kita, menggunakan variabel penuding PTR untuk menuding simpul yang sedang diproses saat itu. Karena itu LINK (PTR) akan menuding simpul berikut dalam list.
7 BROKER Bond Kelly Hall Nelson POINT COSTUMER LINK Vito Hunter Katz Evans Rogers Teller Jones Grant McBride Weston Scott Adams Gambar.. Linked list empat orang broker Statement : PTR := LINK(PTR) akan menggerakkan penuding ke simpul berikutnya sebagai digambarkan dalam Gambar.. Secara rinci, algoritma traversal kita adalah demikian: mula-mula, kita awali dengan memberi nilai kepada PTR, sama dengan. Kita proses INFO(PTR), yakni informasi pada simpul pertama dalam list. Selanjutnya kita perbaharui PTR melalui statement PTR := LINK(PTR). Kita proses sekarang INFO(PTR), yakni informasi pada simpul kedua. Demikianlah selanjutnya kita perbaharui lagi PTR, melalui statemen PTR := LINK(PTR), Proses INFO(PTR), yakni informasi pada simpul ketiga, dan seterusnya sampai nilai PTR := NULL, pertanda berakhirnya traversal.
8 Gambar. Record dalam linked list ALGORITMA. PTR : =. Kerjakan langkah dan dalam hal PTR <> NULL. Proses INFO(PTR). PTR := LINK(PTR). EXIT
9 NAMA SSN SEX SALARY LINK Davis -- Male, Kelly -- Female, Green -- Male, Brown -- Male, Lewis Cohen Rubin Male Male Male,,, Evans -- Female, Harris -- Male, Gambar. Kunjungan dalam linked list Proses yang dilakukan terhadap INFO(PTR) dapat dalam berbagai bentuk. Misalnya proses mencetak, ataupun yang lainnya lagi. Silakan Anda memodifikasi algoritma di atas untuk dapat mencetak semua informasi dalam list. Juga pikirkan bagaimana menghitung banyaknya elemen (simpul) dari list.. PENCARIAN (SEARCHING) DALAM LINKED LIST Pandang linked list, LIST, yang disajikan dalam memori seperti cara yang lalu. Misalkan sekarang diberikan sebuah informasi tertentu ITEM. Diminta untuk menentukan lokasi dari simpul list, yang pertama ditemui memuat informasi ITEM tersebut. Di sini kita akan membahas dua algoritma pencarian, untuk maksud di atas. Algoritma yang pertama tidak menuntut bahwa list telah terurut, sementara algoritma kedua menuntutnya. Kalau ITEM adalah key, yakni bahwa kita tengah melakukan pencarian dalam sebuah berkas untuk mendapatkan record yang mempunyai key ITEM, maka ITEM tersebut pasti tidak akan muncul lebih dari satu kali dalam list.
10 .. CARI DALAM LIST TIDAK TERURUT Untuk list yang tidak terurut, kita dapat melakukan proses cari dengan cara yang cukup sederhana. Cara tersebut adalah melakukan traversal simpul list, sambil setiap kali memeriksa apakah informasi dalam simpul yang tengah dikunjungi tersebut sama dengan ITEM. Jadi dalam algoritma ini, kita memerlukan buah pemeriksaan pada setiap putaran. Yang pertama adalah memeriksa apakah kita telah sampai pada akhir dari list, yakni dengan memeriksa apakah PTR = NULL. Yang kedua adalah memeriksa apakah ITEM telah diketemukan lokasinya, yakni dengan memeriksa apakah INFO(PTR):=ITEM. ALGORITMA SEARCH(INFO, LINK,, ITEM, LOC) PTR := Kerjakan langkah dalam hal PTR <> NULL Jika INFO(PTR) = ITEM maka LOC := PTR exit kalau bukan PTR := LINK(PTR) LOC := NULL (pencarian gagal) Exit Kompleksitas waktu dari algoritma ini adalah sama seperti kompleksitas waktu dari algoritma cari linier terhadap larik. Di sini worst-case running time adalah sebanding dengan n, banyaknya elemen list. Sedangkan average-case mendekati n/. Di sini dengan catatan, kondisi adalah ITEM muncul paling banyak satu kali, serta probabilitas kemunculan ITEM dalam setiap simpul adalah sama. Contoh. Pandang berkas personalia pada Gambar. yang lalu. Modul berikut ini akan mencari lokasi pegawai dengan SSN = NNN dan kemudian menaikkan gajinya sebesar persen. Baca NNN Panggil Prosedur SEARCH(SSN,LINK,,NNN,LOC) Jika LOC <> NULL maka SALARY(LOC) =. * SALARY(LOC) kalau tidak Tulis NNN tidak ada dalam berkas
11 .. CARI DALAM LIST TERURUT Untuk list yang terurut, kita dapat melakukan pencarian dengan cara yang hampir sama seperti dalam list yang tidak terurut. Cara tersebut adalah dengan melakukan traversal simpul list, sambil setiap kali memeriksa apakah informasi dalam simpul yang tengah dikunjungi tersebut, sama dengan ITEM. Karena terurutnya list, kita tidak perlu melakukan traversal sampai akhir dari list, walau ITEM tidak terdapat dalam list. Begitu INFO(PTR) > ITEM, kita sudah boleh menghentikan pencarian kita. Jadi dalam algoritma ini, kita memerlukan buah pemeriksaan pada setiap putaran. Yang pertama adalah memeriksa apakah ITEM sudah lebih besar dari INFO(PTR), yang berarti ITEM tidak terdapat dalam list, dan kita boleh menghentikan proses cari kita. Yang kedua adalah memeriksa apakah ITEM telah diketemukan lokasinya, yakni dengan memeriksa apakah INFO(PTR) := ITEM. ALGORITMA SEARCH(INFO,LINK,,ITEM,LOC) PTR := Kerjakan langkah dalam hal PTR <> NULL Jika INFO(PTR) < ITEM maka PTR := LINK(PTR) bila tidak Jika ITEM = INFO(PTR) maka LOC := PTR Exit kalau tidak LOCK := NULL Exit LOC := NULL Kompleksitas waktu dari algoritma ini juga sama seperti kompleksitas waktu dari algoritma cari linear terhadap larik. Di sini worst-case running time adalah sebanding dengan n, banyaknya elemen list. Sedangkan average-case mendekati n/. Dapat dicatat bahwa untuk larik terurut, kita dapat menggunakan cari binar (binary search), yang waktu pelaksanaannya sebanding dengan log n. Namun algoritma cari binar ini tidak dapat digunakan terhadap linked list terurut, karena kita tidak mempunyai cara untuk mengindeks elemen tengah dari list. Sifat ini adalah salah satu kelemahan pemakaian linked list sebagai sebuah struktur data.
12 Contoh. Pandang sekali lagi, berkas personalia pada Gambar. yang lalu. Modul berikut ini akan mencari lokasi pegawai dengan NAMA = EMP dan kemudian menaikkan gajinya sebesar persen.. Baca EMP. Panggil prosedur SEARCH(NAMA, LINK,, EMP, LOC). Jika LOC <> NULL Maka SALARY(LOC) :=. * SALARY(LOC) kalau tidak Tulis EMP tidak ada dalam Berkas Di sini kita dapat menggunakan algoritma cari untuk list terurut, karena NAMA telah terurut alfabetik.. ALOKASI MEMORI : KOLEKSI SAMPAH Ketika kita menyimpan linked list dalam memori, diasumsikan bahwa selalu dapat dilakukan penyisipan (insertion) simpul baru ke dalam list, serta penghapusan (deletion) simpul dari list. Untuk itu kita memerlukan suatu mekanisme guna menyediakan memori bagi simpul baru, ataupun guna mengelola memori yang sementara ini tidak berguna karena adanya penghapusan simpul, untuk sewaktu-waktu dapat dipakai lagi. Untuk itu, biasanya bersama-sama dengan linked list dalam memori, ditempatkan juga list khusus yang berisi sel memori yang tak digunakan. List ini yang dilengkapi penuding sendiri, disebut list dari ruang yang tersedia, atau free-storage list atau free-pool. Pandang linked list yang ditempatkan sebagai larik sejajar seperti dibicarakan yang lalu, dan katakanlah dilakukan beberapa penyisipan dan penghapusan simpul. Sel memori dari larik, yang tak digunakan, dihimpun menjadi sebuah linked list lain yang menggunakan variabel penuding list berupa larik AVAIL. Karena itu free-storage list ini biasa disebut list AVAIL. Struktur data serupa ini acap kali dituliskan sebagai : LIST(INFO, LINK,, AVAIL)
13 Contoh. Pandang daftar pasien pada contoh Gambar. yang lalu. Kali ini, daftar kita simpan dalam dua larik BED dan LINK. Di sini tempat tidur K dinyatakan sebagai BED(K). Maka ruang yang tersedia dalam larik BED tersebut dapat dikaitkan seperti pada Gambar.. Perhatikan bahwa BED() merupakan tempat tidur pertama yang tersedia, BED() adalah tempat tidur berikutnya, dan BED() merupakan yang terakhir tersedia. Karenanya BED() mempunyai field nextpointer nol atau LINK() =. BED NUMBER PATIENT Kirk Next Dean Maxwell AVAIL Adams Lane Green Samuels Fields Nelson Gambar.. Sel memori yang tidak digunakan Contoh. (a) Ruang tersedia dalam larik TEST, pada Gambar., dapat dikaitkan seperti terlihat pada Gambar.. Perhatikan bahwa masing-masing list ALG dan GEOM boleh menggunakan list AVAIL. Dapat dicatat bahwa AVAIL =, maka TEST() adalah simpul bebas yang pertama dalam list AVAIL tersebut. Karena LINK(AVAIL) = LINK() =, maka TEST() adalah simpul bebas kedua dalam AVAIL. Demikian selanjutnya. b. Larik NAME dapat dikaitkan seperti pada Gambar.. Perhatikan bahwa list ruang bebas dalam NAME mengandung elemen NAME(), NAME(), NAME(),
14 NAME(), dan NAME(). Selanjutnya perhatikan nilai LINK yang secara bersama mendaftar ruang bebas untuk larik SSN, SEX dan SALARY. ALG TEST LINK GEOM AVAIL Gambar.. Koleksi memori kosong dari Gambar. (c) Ruang tersedia dalam larik CUSTOMER pada Gambar., dapat dikaitkan secara Gambar.. Kita tekankan bahwa masing-masing dari keempat list dapat menggunakan list AVAIL untuk pelanggan baru. Contoh. Pandang LIST(INFO,LINK,,AVAIL) mempunyai ruang memori untuk n = simpul. Lebih lanjut pandang bahwa list pada keadaan awal adalah hampa. Gambar. menunjukkan nilai LINK sedemikian sehingga list AVAIL berisi barisan INFO(), INFO(),, INFO().
15 AVAIL NAMA SSN SEX SALARY LINK Davis -- Male, Kelly -- Female, Green -- Male, Brown Lewis Cohen Rubin Evans Male Male Male Male Female,,,,, Harris -- Male, Gambar. Koleksi memori kosong dari Gambar. KOLEKSI SAMPAH Setelah penghapusan suatu simpul dari linked list, terdapat ruang memori yang bebas (tidak terpakai). Kita menginginkan ruang memori tersebut dapat digunakan lagi. Jelasnya kita menginginkan tersedianya ruang untuk kelak dapat kita pakai. Salah satu caranya adalah memasukkannya segera ke dalam list ruang-bebas. Hal inilah yang kita kerjakan kalau kita mengimplementasikan linked list melalui larik, bahkan meskipun metode ini sangat memakan banyak waktu dalam sistem operasi komputer. Untuk ini kita mungkin mengambil alternatif metode dengan sistem operasi dapat secara periodik mengumpulkan semua ruang akibat penghapusan simpul list tersebut ke dalam list ruang-bebas. Metode ini dikenal sebagai koleksi sampah atau garbage collection.
16 BROKER Bond Kelly Hall Nelson AVAIL POINT COSTUMER LINK Vito Hunter Katz Evans Rogers Teller Jones Grant McBride Weston Scott Adams Gambar.. Koleksi memori kosong dari Gambar. Kerap kali kita ingin menambahkan data ke dalam suatu struktur data. Namun hal tersebut tak dapat dilaksanakan lagi, karena sudah tak ada lagi ruang yang tersedia, yakni dalam hal list ruang-bebas adalah hampa. Keadaan ini disebut overflow.
17 AVAIL INFO LINK Gambar.. Memori dalam keadaan hampa. PENYISIPAN SIMPUL KE DALAM LINKED LIST Misalkan LIST adalah linked list, dengan A dan B adalah dua simpul yang berurutan. Lihat Gambar.(a). Misalkan sebuah simpul baru N akan disisipkan ke dalam LIST, antara simpul A dan simpul B. Diagram skematik dari proses penyisipan ini terlihat dalam Gambar.(b). Di sini simpul A sekarang menuding ke simpul baru N, dan simpul baru N menuding ke simpul B, yang tadinya dituding oleh A. Pandang bahwa linked list kita tersimpan di dalam memori dalam bentuk: LIST(INFO,LINK,,AVAIL) Gambar. tidak dapat memperlihatkan bahwa simpul baru N memanfaatkan ruang memori dari list AVAIL. Untuk kemudahan dalam proses, simpul pertama dari list AVAIL dipakai untuk menyimpan simpul baru N tersebut. Diagram skematik yang lebih tepat, terlihat pada Gambar..
18 Node A Node B x Gambar.(a) Linked-list awal Node A Node B x Node N Gambar.(b) Penyisipan simpul N Perhatikan bahwa field penuding berubah sebagai berikut :. Field nextpointer dari simpul A, sekarang menuding ke simpul baru N, ter-hadap mana, sebelumnya AVAIL menuding.. AVAIL sekarang menuding ke simpul kedua pada ruang bebas, terhadap mana, sebelumnya simpul N menuding.. Field nextpointer dari simpul N, sekarang menuding ke simpul B, yang tadinya dituding oleh simpul A. Di sini juga terdapat kasus khusus, yakni jika simpul baru N adalah simpul pertama dalam list, maka akan menuding ke N, dan jika simpul baru N adalah simpul terakhir dalam list, maka N akan berisi penuding nol. Contoh. a. Pandang Gambar., yakni daftar alfabetik pasien. Misalkan seorang pasien baru Hughes masuk. Perhatikan bahwa : () Hughes ditempatkan di ranjang, yakni ranjang pertama yang kosong (tersedia). () Hughes akan disisipkan dalam list, antara Green dan Kirk.
19 Terjadi perubahan dalam field penuding, sebagai berikut : LINK() = (Sekarang Green menuding Hughes) LINK() = (Sekarang Hughes menuding Kirk) AVAIL = (Sekarang AVAIL menuding ranjang kosong kedua) AVAIL Node A Node B x x Node N Gambar. Penyisipan simpul N menghilangkan lokasi memori di AVAIL b. Pandang Gambar., daftar broker dan pelanggannya. Karena list pelanggan tidak terurut, asumsikan bahwa setiap pelanggan baru ditambahkan pada awal list. Misalkan Gordan adalah pelanggan baru dari Kelly. Perhatikan bahwa : () Gordan dimasukkan sebagai CUSTOMER(), yakni simpul tersedia pertama () Gordan disisipkan di muka Hunter, yang tadinya adalah pelanggan pertama dari Kelly. Di sini terjadi perubahan dalam field penuding, yakni sebagai berikut : POINT() = (Sekarang list mulai dengan Gordan) POINT() = (Gordan menuding Hunter) AVAIL = (Sekarang AVAIL menuding ke simpul tersedia yang berikutnya). c. Pandang bahwa elemen data A, B, C, D, E, dan F akan dimasukkan berturut-turut ke dalam list hampa Gambar.. Sekali lagi kita asumsikan bahwa data disisipkan pada bagian awal list. Berdasarkan ini, sesudah kali penyisipan, F menuding ke E; E menuding ke D, D menuding ke C, C menuding ke B, B menuding ke A. A berisi penuding nol. Di sini AVAIL =, yakni simpul pertama yang tersedia sesudah penyisipan di atas, dan = yang menunjukkan lokasi simpul
20 pertama F. Gambar. menunjukkan list, setelah penyisipan tersebut (untuk n = ) INFO LINK A B C D E AVAIL F Gambar.. Penyisipan enam INFO dalam sebuah linked list.. ALGORITMA PENYISIPAN Algoritma penyisipan dapat kita bagi atas beberapa situasi atau kasus. Di sini kita bicarakan tiga di antaranya, yakni algoritma penyipan simpul pada bagian awal list, algoritma penyisipan simpul sesudah suatu simpul yang diketahui lokasinya, dan yang ketiga adalah penyisipan simpul ke dalam suatu list terurut. Semua algoritma kita tersebut berasumsi bahwa linked list tersimpan di dalam memori dalam bentuk : LIST(INFO,LINK,,AVAIL) dan variabel ITEM menyatakan informasi baru yang akan ditambahkan ke dalam list. Karena semua algoritma penyisipan kita tersebut membutuhkan simpul dari list AVAIL, maka mereka selalu mengandung langkah :. Memeriksa ruang bebas dari list AVAIL, kalau ternyata tidak ada lagi, yakni dalam hal ini AVAIL = NULL, algoritma mengirim pesan overflow.. Pemindahan simpul pertama dari list AVAIL. Menggunakan variabel NEW kita dapat mengimplementasikan pemindahan ini melalui sepasang statement.
21 NEW AVAIL := AVAIL := LINK(AVAIL). Menyalin informasi baru tersebut ke dalam simpul baru, atau dengan perkataan lain, kita memakai statement INFO(NEW) := ITEM Diagram skematik kedua langkah terakhir di atas terlihat pada Gambar.. NEW AVAIL Free storage list ITEM x Gambar.. Penyisipan simpul yang mengubah penuding AVAIL.. PENYISIPAN PADA BAGIAN AWAL LIST Di sini linked list kita tidak perlu terurut dan penyisipan tidak harus di suatu posisi tertentu. Maka posisi termudah untuk memasukkan simpul baru adalah di bagian awal list. ALGORITMA : INSFIRST(INFO,LINK,,AVAIL,ITEM) [Algoritma ini menyisipkan ITEM sebagai simpul pertama dari list.]. (Apakah overflow?) Jika AVAIL = NULL maka tulis OVERFLOW dan exit. (Memindahkan simpul pertama dari list AVAIL)
22 NEW := AVAIL dan AVAIL := LINK[AVAIL]. INFO[NEW] := ITEM (menyalin data baru ke dalam simpul baru). LINK[NEW] := (Simpul baru sekarang menuding ke simpul awal semula). := NEW (Mengubah agar menuding ke simpul yang baru). Exit. Langkah sampai telah dibahas sebelum ini, dan diagram skematik langkah dan terlihat pada Gambar.. Sedangkan diagram skematik langkah dan dapat dilihat pada Gambar.. NEW x ITEM Gambar. Penyisipan di awal list Contoh. Pandang list pada Gambar.. Misalkan angka akan disisipkan pada awal dari list geometri. Kita akan memakai algoritma di atas. Perhatikan bahwa ITEM =, INFO = TEST, dan = GEOM. INSFIRST(INFO,LINK,,AVAIL,ITEM). Karena AVAIL <> NULL, kita pergi ke langkah. NEW =, maka AVAIL := LINK[) =. TEST[] =
23 . LINK[] =. GEOM =. Exit Gambar. memperlihatkan keadaan setelah dimasukkan ke dalam list geometri. Perhatikan bahwa hanya penuding yang berubah, yakni AVAIL, GEM, dan LINK[]. ALG TEST LINK GEOM AVAIL Gambar.. Penyisipan nilai pada awal list GEOM
24 .. PENYISIPAN PADA BAGIAN DEPAN LIST Pandang bahwa diberikan nilai dari LOC, yakni lokasi dari simpul A di dalam linked list, atau nilai LOC = NULL. Berikut ini adalah algoritma untuk menyisipkan ITEM ke dalam list, tepat sesudah simpul A, atau jika LOC = NULL, maka ITEM disisipkan sebagai simpul pertama dari list. Misalkan N adalah simpul baru, yang lokasinya adalah NEW. Jika LOC = NULL, maka penyisipan dikerjakan seperti pada algoritma yang lalu. Dalam hal lain, seperti terlihat pada Gambar., kita jadikan N menuding ke simpul B (simpul yang sebelumnya mengikuti simpul A) dengan menggunakan statement : LINK[NEW] := LINK[LOC] dan kita jadikan simpul A menuding ke simpul baru N, dengan menggunakan statement: LINK[LOC] := NEW Algoritma : INSLOC(INFO,LINK,,AVAIL,LOC,ITEM) [Algoritma ini dimaksudkan untuk menyisipkan ITEM, sehingga mengikuti simpul dengan lokasi LOC atau menyisipkan ITEM sebagai simpul pertama, bila LOC = NULL].. [OVERELOW?] jika AVAIL = NULL, maka tulis: OVERFLOW, dan Exit.. [Memindahkan simpul pertama dari List AVAIL] NEW := AVAIL AVAIL := LINK[AVAIL]. AVAIL-ITEM. [menyalin data baru ke dalam simpul baru]. Jika LOC = NULL, maka [sisipkan sebagai simpul pertama] LINK(NEW) := dan := NEW. dalam hal lain : [sisipkan sesudah simpul dengan lokasi LOC] LINK[NEW] := LINK[LOC] dan LINK[LOC] := NEW [Akhir dari struktur jika]. Exit.. PENYISIPAN KE DALAM LINKED LIST TERURUT Misalkan ITEM akan disisipkan ke dalam linked list terurut LIST. ITEM harus disisipkan di antara simpul A dan B yang berturutan sedemikian sehingga :
25 INFO(A)< ITEM< INFO(B). SAVE PTR x Gambar. Penyisipan simpul pada list terurut Berikut ini prosedur untuk mencari lokasi dari simpul A, yakni mencari lokasi dari simpul terakhir dari LIST yang nilainya kurang dari ITEM. Kita lakukan traversal list, pergunakan variabel penuding PTR, dan bandingkan ITEM dengan INFO (PTR) pada masing-masing simpul selama traversal. Kita jaga jejak lokasi simpul sebelumnya, dengan menggunakan variabel penuding SAVE, seperti digambarkan pada Gambar.. Maka SAVE dan PTR terupdate dengan statement : SAVE := PTR dan PTR :LINK[PTR] Traversal dilanjutkan selama INFO[PTR] < ITEM, atau dengan perkataan lain traversal berhenti segera saat ITEM <= INFO[PTR]. Kemudian PTR menuding ke simpul B, maka SAVE berisi lokasi dari simpul A. Berikut ini prosedur formal kita. Kasus bahwa list adalah hampa, dan ITEM < INFO[], sehingga LOC := NULL ditangani tersendiri, karena mereka tak mengandung variabel SAVE. Prosedur : FINDA(INFO, LINK,, ITEM, LOC) [Prosedur ini akan menemukan lokasi LOC dari simpul terakhir dalam list terurut, sedemikian sehingga INFO[LOC] < ITEM, atau menjadikan LOC := NULL]. (List hampa?] Jika := NULL, maka LOC := NULL, dan return. (Kasus khusus?] Jika ITEM < INFO[], maka LOC := NULL, dan return. SAVE := dan PTR := LINK[] [mengawali penuding]. Ulangi langkah dan sementara PTR <> NULL. Jika ITEM < INFO[PTR], maka : LOC := SAVE, dan return. [Akhir dari struktur jika]
26 . SAVE := PTR dan PTR := LINK[PTR] [mengupdate penuding] [Akhir dari loop langkah ]. LOC := SAVE. Return. Sekarang kita mempunyai algoritma untuk menyisipkan ITEM ke dalam linked list terurut LIST, dengan memanfaatkan prosedur terakhir. Algoritma : INSSRT(INFO, LINK,, AVAIL, ITEM) [Algoritma ini menyisipkan ITEM ke dalam suatu linked list terurut.. [Gunakan Prosedur FINDA untuk mencari lokasi dari simpul sebelum ITEM] Call FINDA(INFO, LINK,, ITEM, LOC).. [Gunakan algoritma INSLOC untuk menyisipkan ITEM sesudah simpul dengan lokasi LOC] Call INSLOC(INFO,LINK,,AVAIL,LOC,ITEM). Exit Contoh. Perhatikan list yang terurut secara alfabetik dari para pasien pada Gambar. yang lalu. Pandang bahwa Jones akan disisipkan ke dalam list tersebut. Kita akan menggunakan algoritma INSSRT di atas, yang pada hakikatnya melaksanakan prosedur FINDA, dan kemudian algoritma INSLOC. Perhatikan bahwa ITEM = Jones dan INFO = BED. a. FINDA(BED,LINK,,ITEM,LOC). Karena <> NULL, maka kita melangkah ke langkah. Karena BED[] = Adams < Jones, kendali beralih ke langkah. SAVE = dan PTR LINK[] =. Langkah dan diulang, sebagai berikut : a. BED[] = Dean < Jones, maka SAVE =, dan PTR LINK[] = b. BED[] = Fields < Jones, maka SAVE =, dan PTR = LINK[] = c. BED[] = Green < Jones, maka SAVE =, dan PTR = LINK[] = d. BED[] = Kirk > Jones, maka LOC = SAVE =, dan Return
27 b. INSLOC(BED,LINK,,AVAIL,LOC,ITEM). Karena AVAIL <> NULL, maka kita melangkah ke langkah. NEW =, dan AVAIL = LINK[] =. BED[] = Jones. Karena LOC <> NULL, maka LINK[] = LINK(] =, dan LINK[]= NEW =. Exit Gambar. menunjukkan struktur data kita sesudah Jones disisipkan ke dalam list. Di sini hanya penuding yang berubah, yakni AVAIL, LINK[], dan LINK[]. PENYALINAN Pandang bahwa kita ingin menyalin seluruh bagian dari list, atau akan membentuk sebuah list baru, yang diperoleh dari penyambungan list yang diketahui. Kita dapat melakukannya dengan mendefinisikan sebuah list hampa, dan menambahkan elemen list yang diketahui tersebut, satu persatu menggunakan berbagai macam algoritma penyisipan kita yang lalu. List hampa didefinisikan dengan cara sederhana, yakni dengan mengambil sebuah nama variabel, atau penuding untuk list, seperti misalnya NAME, dan kemudian memasang NAME := NULL. AVAIL BED LINK Kirk Dean Maxwell Adams Lane Green Samuels Jones Fields Nelson Gambar.. Penyisipan Jones dalam list terurut
28 . PENGHAPUSAN SIMPUL LINKED LIST Misalkan Simpul N adalah simpul dari LIST yang terletak di antara simpul A dan simpul B, seperti terlihat pada Gambar.a. Simpul N tersebut akan dihapus dari LIST. Diagram skematik dari penghapusan tersebut terlihat pada Gambar.b. Penghapusan terjadi begitu nextpointer dari A berubah menuding ke B. Dalam peng-hapusan ini, kita harus mengingat alamat dari simpul A, simpul pendahulu dari Simpul yang akan kita hapus tersebut. Pandang linked list kita tersimpan dalam memori dalam bentuk : LIST(INFO,LINK,,AVAIL) Gambar. tidak memperlihatkan fakta bahwa bila kita melakukan penghapusan simpul N, kita akan segera memulangkan ruang memori kepada list AVAIL. Diagram skematik yang lebih tepat terlihat pada Gambar.. Perhatikan bahwa field penuding berubah, yakni :. Nextpointer dari Simpul A sekarang menuding ke B, yang tadinya dituding oleh N.. Nextpointer dari Simpul N sekarang menuding ke simpul pertama dari ruang bebas (free pool), yang tadinya dituding oleh AVAIL.. AVAIL sekarang menuding ke simpul N Di sana juga terdapat kasus istimewa. Yang pertama adalah penghapusan simpul N sebagai simpul pertama dalam list. Dalam hal ini, akan menuding ke simpul B. Dalam kasus kedua, yakni penghapusan simpul N sebagai simpul terakhir dari list, simpul A akan berisi penuding NULL. Contoh. a. Perhatikan list pasien pada Gambar -. Misalkan pasien Green sudah diper-bolehkan pulang, maka BED[] sekarang menjadi kosong Agar linked list kita tersebut tetap terjaga, maka perlu dilakukan perubahan terhadap beberapa field penuding, yakni sebagai berikut : LINK[] = LINK[] = AVAIL =
29 Node A Node N Node B x (a) sebelum dihapus Node A Node N Node B x (b) sesudah dihapus Gambar. Penghapusan linked list Dengan perubahan pertama, Fields yang tadinya mendahului Green, sekarang menuding ke Jones, yang tadinya mengikuti Green. Perubahan kedua dan ketiga akan menambah jumlah ranjang kosong baru pada list AVAIL. Kita tekankan bahwa sebelum membuat penghapusan, kita harus mencari simpul BED[], yang tadinya menuding ke simpul yang dihapus, BED[]. Node A Node N Node B x AVAIL x Gambar. Memori kosong setelah penghapusan simpul
30 b. Perhatikan Gambar., list para broker dan pelanggannya. Pandang Teller, pelanggan pertama dari Nelson, akan dihapus dari list. Untuk itu dilakukan perubahan: POINT[] = LINK[] = AVAIL = Dengan perubahan pertama, Nelson sekarang menuding ke Jones, yang tadinya adalah pelanggan kedua. Perubahan kedua dan ketiga akan menambah simpul baru pada list AVAIL. c. Misalkan elemen data B dan C akan dihapus satu persatu dari list Gambar.. List yang baru, digambarkan pada Gambar.. Perhatikan bahwa sekarang ketiga simpul pertama yang tersedia adalah : INFO[], yang tadinya berisi C INFO[], yang tadinya berisi B INFO[], yang tadinya berisi E INFO LINK A D AVAIL F Gambar. Penghapusan simpul dari Gambar. Perhatikan bahwa urutan simpul dalam list AVAIL adalah berkebalikan dengan urutan penghapusan simpul tersebut.
31 .. ALGORITMA PENGHAPUSAN Algoritma penghapusan simpul suatu linked list muncul dalam berbagai situasi. Di sini akan kita bahas di antaranya. Yang pertama adalah penghapusan simpul sesudah suatu simpul yang diketahui, dan yang kedua adalah penghapusan simpul yang diketahui mempunyai informasi ITEM. Untuk algoritma kita, selalu diasumsikan, bahwa linked list adalah dalam bentuk : LIST(INFO,LINK,,AVAIL). Semua algoritma penghapusan kita, selalu mengembalikan ruang memori dari simpul yang dihapus, kepada bagian awal dari list AVAIL. Karenanya, semua algoritma kita mengandung pasangan statement berikut ini : LINK[LOC] := AVAIL AVAIL := LOC Di sini LOC adalah lokasi dari simpul N yang kita hapus. Kedua operasi di atas digambarkan pada Gambar.. LOC Node N AVAIL free storage list x Gambar. Penghapusan simpul yang dicatat oleh AVAIL Beberapa dari Algoritma kita adalah dimaksudkan untuk menghapus simpul pertama atau simpul terakhir dari list. Algoritma seperti itu harus memeriksa apakah terdapat simpul di dalam List. Jika = NULL, maka algoritma harus mengeluarkan pesan underflow.
32 .. PENGHAPUSAN SIMPUL SESUDAH SIMPUL YANG DIKETAHUI Berikut ini algoritmanya : DEL(INFO, LINK, AVAIL, LOC, LOCP) (Algoritma ini dimaksudkan untuk menghapus simpul N dengan lokasi LOC. LOCP adalah lokasi dari simpul yang mendahului N, atau apabila N adalah simpul pertama, LOCP = NULL. Jika LOCP= NULL, maka: := LINK[]. [Menghapus simpul pertama] dalam hal lain : LINK[LOCP] = LINK[LOC] [Menghapus Simpul N] [Akhir dari struktur jika]. [Mengembalikan simpul terhapus kepada list AVAIL]. Exit. Gambar. merupakan diagram skematik dari Statement : := LINK[] Node Node Node Gambar.. Pengalihan penuding ketika satu simpul dihapus Gambar. merupakan diagram skematik dari statements : LINK[LOCKP] := LINK[LOC]
33 LOCP LOC Node N x Gambar. Skematik dari statements LINK[LOCKP] := LINK[LOC].. PENGHAPUSAN SIMPUL YANG DIKETAHUI INFORMASINYA Algoritmanya, yakni algoritma DELLOC bekerja dengan memanfaatkan prosedur FINDB. Procedure : FINDB(INFO,LINK,JTEM,LOC,LOCP) [Prosedur ini dimaksudkan untuk mencari lokasi LOC dari simpul N pertama yang mengandung ITEM dan lokasi LOCP dari simpul pendahulu N. Jika ITEM tidak terdapat pada list, maka prosedur akan menjadikan LOC NULL, dan jika ITEM muncul pada simpul pertama, maka LOCP = NULL.. [List hampa?] Jika := NULL, maka: LOC := NULL, dan LOCP := NULL, dan return [Akhir dari struktur jika]. [ITEM, di dalam simpul pertama?] Jika INFO[] := ITEM, maka : LOC := dan LOCP := NULL, dan Return.. SAVE := dan PTR := LINK[] [Inisialisasi Penuding]. Ulangi langkah dan sementara PTR <> NULL. Jika INFO[PTR] = ITEM, maka LOC := PTR dan LOCP := SAVE, dan Return [Akhir dari struktur jika]. SAVE := PTR dan PTR := LINK[PTR] [Mengupdate penuding] [Akhir dari loop langkah ]. LOC := NULL [cari tidak berhasil]
34 . Return Berikut ini algoritma lengkapnya Algoritma : DELLOC(INFO, LINK,, AVAIL, ITEM) (Algoritma ini dimaksudkan untuk menghapus dari suatu linked list, simpul N pertama yang berisi informasi ITEM). [Gunakan prosedur FINDB di atas, untuk mencari lokasi dari N dan simpul pendahulunya] Call FINDB(INFO, LINK,, ITEM, LOC, LOCP). Jika LOC := NULL, maka: tulis: ITEM tidak dalam list, dan Exit.. [Hapus simpul.] Jika LOCP := NULL, maka: := LINK[]. [Hapus simpul pertama] Jika tidak: LINK[LOCP] := LINK(LOC] [Akhir dari struktur jika]. [Mengembalikan simpul terhapus ke list AVAIL] LINK[LOC] := AVAIL dan AVAIL := LOC.. Exit. Contoh. Pandang list pasien pada Gambar.. Misalkan pasien Green diperbolehkan pulang. Untuk menghapusnya dari list, kita laksanakan prosedur FINDB dan algoritma DELLOC di atas. Di sini ITEM Green, INFO = BED, =, dan AVAIL =. (a). FINDB(BED,LINK,,ITEM,LOC,LOCP). Karena <> NULL, kita lanjutkan ke langkah. Karena BED[] = Adams <> Green, kita lanjutkan ke langkah
35 . SAVE = dan PTR = LINK[] =. Langkah dan diulangi sebagai berikut : a. BED[] = Dean <> Green, maka SAVE =, dan PTR LINK[] = b. BED[] = Fields <> Green, maka SAVE =, dan PTR = LINK[] = c. BED[] = Green, maka kita peroleh LOCP = PTR =, dan LOCP = SAVE =, dan Return AVAIL BED LINK Kirk Dean Maxwell Adams Lane Samuels Jones Fields Nelson Gambar. Penghapusan sebuah simpul (b) DELLOC(BED,LINK,,AVAIL, ITEM). Call FINDB(BED,LINK,,ITEM,LOC,LOCP), diperoleh LOC =, dan LOCP =. Karena LOC <> NULL, lanjutkan ke langkah. Karena LOCP <> NULL, kita peroleh LINK[] = LINK[] =. LINK[] =, dan AVAIL =. Exit.
36 Gambar. menunjukkan struktur data setelah Green dihapus dari list. Kita lihat bahwa hanya penuding berubah, yakni LINK[], LINK[], dan AVAIL.. HEADER LINKED LIST Header linked list adalah suatu linked list yang mengandung suatu simpul khusus yang terletak pada bagian awal dari list, yang disebut simpul header. Berikut ini jenis header linked list yang biasa digunakan, yakni :. Grounded Header list, yang adalah header list yang simpul terakhirnya berisi penuding NULL. Kata grounded dipakai karena banyak buku menggunakan simbol listrik grounded (dibumikan) untuk menunjukkan penuding NULL.. Circular Header List adalah header list yang simpul terakhimya menuding ke simpul header dari list tersebut.. Gambar. merupakan diagram skematik dari header list tersebut. Biasanya jika tidak disebutkan apa-apa, maka kita maksudkan header list adalah circular. Perhatikan bahwa penuding dari list, yakni selalu menuding ke simpul header. Karenanya LINK[] = NULL menunjukkan bahwa grounded header list adalah hampa, dan LINK[] = menunjukkan bahwa circular header list adalah hampa. Header node x (a) Grounded header list Header node (b) Circular header list Gambar. Dua macam header list
37 Meskipun data kita simpan dalam memori sebagai header list, namun list AVAIL tetap disimpan sebagai linked list biasa. Contoh. Perhatikan berkas Personalia pada Gambar.. Data akan kita simpan sebagai header list seperti pada Gambar.. Perhatikan bahwa sekarang LOC = adalah lokasi dari record header. Karenanya, =, dan karena Rubin adalah pegawai terakhir, maka LINK[] =. Header dapat pula dipakai menyimpan informasi tentang isi berkas. Sebagai contoh, misalkan SSN[] = menunjukkan banyaknya pegawai, dan SALARY[] =. menunjukkan total gaji yang dibayarkan kepada pegawai. AVAIL NAMA SSN SEX SALARY LINK Davis -- Male, Kelly -- Female, Green -- Male, Brown Lewis Cohen Rubin Evans Harris, -- Male, Male Male Male,,, -- Female, -- Male, Gambar. Contoh header linked-list
38 . ALGORITMA UNTUK HEADER LINKED LIST Algoritma berikut ini dimaksudkan untuk melakukan kunjungan atau traversing simpul suatu circular header list (traversal dalam circular header list) : Algoritma (Traversal dalam circular header list) Misalkan LIST adalah circular header list dalam memori. Algoritma ini akan melakukan traversal LIST. Kita gunakan operasi proses terhadap setiap simpul dari LIST.. PTR:=LINK[] [inisialisasi pnuding PTR). Ulangi langkah dan sementara PTR <> ;. Proses INFO[PTR]. PTR := LINK[PTR]. [PTR sekarang menuding ke simpul berikutnya] [Akhir dari loop langkah ]. Exit. Selanjutnya diberikan algoritma untuk mencari lokasi LOC dari simpul yang pertama kali memuat informasi ITEM dalam list, atau menjadikan LOC = NULL, bila tidak ditemukan. Algoritma : SRCHHL(INFO, LINK,, ITEM, LOC) LIST adalah circular header list dalam memori. Algoritma ini untuk mencari lokasi LOC dari simpul yang pertama kali memuat informasi ITEM dalam list, atau men-jadikan LOC = NULL, bila tidak ditemukan.. PTR := LINK[]. Ulangi sementara INFO[PTR] <> ITEM dan PTR <> : PTR := LINK[PTR] [PTR sekarang menuding ke simpul berikutnya [Akhir dari loop]. Jika INFO[PTR] := ITEM, maka LOC := PTR kalau tidak : LOC := NULL. [Akhir dari struktur jika]. Exit.
39 Selanjutnya adalah prosedur untuk mencari lokasi LOC dari simpul N pertama yang mengandung ITEM dan lokasi LOCP dari simpul pendahulu N. Jika ITEM tidak terdapat pada list, maka prosedur akan menjadikan LOC = NULL, dan jika ITEM muncul pada simpul pertama, maka LOCP = NULL. Prosedur ini berfungsi sama seperti Prosedur FINDB(INFO,LINK,,ITEM,LOC,LOCP) untuk linked list biasa, yang telah dibahas terdahulu. Prosedur : FINDBHL[INFO, LINK,, ITEM, LOC, LOCP). SAVE := dan PTR := LINK[]; [inisialisasi penuding]. Ulangi sementara INFO[PTR] <> ITEM dan PTR <>. SAVE := PTR dan PTR := LINK[PTR] [Mengupdate penuding] [Akhir dari loop]. Jika INFO[PTR] := ITEM, maka LOC := PTR dan LOCP := SAVE, Kalau tidak LOC := NULL dan LOCP := SAVE. [Akhir dari struktur jika]. Exit. Berikut, terakhir sekali adalah algoritma yang fungsinya sama seperti algoritma DELLOC(INFO, LINK,, AVAIL, ITEM) untuk linked list biasa, yakni untuk untuk menghapus, dari suatu circular header linked list, simpul N pertama yang berisi informasi ITEM. Algoritma : DELLOCHL(INFO, LINK,, AVAIL, ITEM). [Gunakan Prosedur FINDBHL yang lalu untuk mencari lokasi dari N dan Simpul pendahulunya] Call LINDBHL(INFO, LINK,, ITEM, LOC, LOCP). Jika LOC = NULL, maka: tulis: ITEM tidak dalam list, dan Exit.. LINK[LOCP] := LINK[LOC]..[Menghapus Simpul]. [Mengembalikan simpul terhapus kepada List AVAIL] LINK[LOC] := AVAIL dan AVAIL := LOC.. Exit.
40 Sebagai catatan, masih terdapat lagi variasi dari linked list yang kadang-kadang muncul dalam literatur, yakni :. Linked list yang simpul terakhirnya menuding ke simpul awal. Linked list ini disebut Circular List.. Satu jenis lagi adalah linked list yang mempunyai simpul khusus (header) di bagian awal dan di bagian akhir list. Gambar. merupakan diagram skematik kedua list tersebut. (a) Circular linked list Header node Trailer node x (b) Linked list with header and trailer nodes Gambar.. Dua variasi lain dari linked list. PENYAJIAN POLINOMIAL Header linked list acap kali dipergunakan untuk menyimpan polinomial dalam memori. Di sini simpul header selalu merupakan bagian penting dalam penyajian, karena ia dibutuhkan untuk menyajikan polinomial nol. Contoh. Pandang polinomial p(x).= x x x -. Polinomial ini dapat disimpan sebagai header list seperti terlihat pada Gambar -a. Di sini masing-masing simpul berkorespondensi dengan suku tidak nol dari polinomial. Secara khusus, bagian informasi dari simpul dibagi menjadi dua field yang masing-masingnya berturut-turut menyajikan
41 koefisien dan eksponen dari suku yang bersangkutan, dan simpul dikaitkan berdasar atas derajat menurun. Perhatikan bahwa variabel penuding POLY menuding ke simpul header, yang field eksponennya diberi nilai bilangan negatif, dalam hal ini adalah -. Di sini penyajian larik dari list membutuhkan larik linier, yang boleh kita sebut COEF, EXP dan LINK. Salah satu penyajian terdapat dalam Gambar.b. POLY Coefficient of term Exponent of term Gambar.(a) Penyajian polinomial dalam linked list COEF EXP LINK - POLY - - AVAIL n Gambar.(b) Penyajian polinomial dalam memori
42 . LINKED-STACK dan LINKED-QUEUE Bentuk lain dari struktur berkait adalah linked-stack dan linked-queue. Diagram skematik dari linked-stack dan linked-queue dilihat pada Gambar. dan.. TOP a DATA LINK Gambar.. Linked stack FRONT REAR data link Gambar. Linked-queue Operasi penghapusan dan penyisipan pada linked-stack sama seperti yang dilakukan pada stack biasa, yaitu pada TOP dari stack. Sedangkan operasi penyisipan dan penghapusan pada linked-queue juga sama seperti yang dilakukan pada queue bisa. Operasi penyisipan dilakukan pada REAR dan operasi penghapusan pada FRONT dari queue... TWO WAY LIST Linked list yang kita bicarakan sebelumnya adalah one way list. Selanjutnya, kita bicarakan bentuk lainnya yaitu two way list. Two way list adalah koleksi elemen data secara linear
43 yang disebut dengan nodes, yang setiap nodenya dibagi atas tiga bagian utama, yaitu : () nilai data atau informasi (INFO), () penuding ke alamat node sebelumnya (BACK), dan () penuding ke alamat node berikutnya (FORW). Bila lokasi (alamat) suatu node dilambangkan dengan LOC, maka berlaku FORW(LOCA) = LOCB jika dan hanya jika, BACK(LOCB) = LOCA, atau lokasi berikutnya dari node A adalah lokasi node B, jika dan hanya jika, lokasi sebelumnya dari node B adalah lokasi node A. Skema dari two way list dapat dilihat di Gambar.. FIRST adalah penunjukkan node awal dan LAST adalah penandaan node terakhir. Skema pemetaan di memori dari two way list dapat dilihat di Gambar.. FIRST INFO (nilai data dari node N) BACK (penunjuk ke node sebelumnya) FORW (penunjuk ke node berikutnya) LAST x x Node N Gambar. Skema two way list FIRST INFO FORW BACK Lisa N. Conny N. AVAIL Nur Lola Nur Loli LAST Mardiana Gambar.. Contoh pemetaan di memori untuk two way list
44 .. TWO WAY HEADER LIST Two way header list merupakan gabungan dari two way list dan circular header linked list. Intinya, pada two way list, FIRST atau -nya mengarah ke header node, begitu juga node terakhirnya akan mengarah kembali ke header nodenya. Header Node Node N Gambar. Skema two way header list Berikut, pada Gambar. merupakan contoh penggunaan two way header list yang merupakan pengembangan dari header linked list yang ada di Gambar.. Silakan Anda telusuri field FORW dan BACK-nya. Operasi-operasi yang ada, seperti biasa, traversing (penelusuran), searching (pencarian), deleting (penghapusan), dan inserting (penyisipan) item-item data. Gambar. dan. memperlihatkan skema penghapusan dan penyisipan item data (simpul/ node). Silakan Anda buat programnya dengan bahasa pemrograman apapun yang Anda kuasai. Algoritma penghapusan simpul : DELTWL(INFO, FORW,BACK,,AVAIL, LOC). [Delete node] Set FORW[BACK[LOC]] = FORW[LOC] and BACK[FORW[LOC]] := BACK[LOC]. [Remove node to AVAIL list] Set FORW[LOC] := AVAIL and AVAIL := LOC. Exit
45 AVAIL NAMA SSN SEX SALARY FORW Davis -- Male, Kelly -- Female, Green -- Male, Brown Lewis Cohen Rubin Evans Male Male Male Male Female,,,,,, Harris -- Male, BACK Gambar. Contoh two way header linked-list LOC Node N Gambar. Penghapusan node N
46 Algoritma penyisipan simpul : INSTWL(INFO, FORW,BACK,,AVAIL, LOCA,LOCB,ITEM). [OVERFLOW?] IF AVAIL = NULL, then Write : OVERFLOW and Exit. [Remove node from AVAIL list and copy new data into node.] SET NEW := AVAIL, AVAIL = FORW[AVAIL], INFO[NEW] := ITEM. [Insert node into list.] Set FORW[LOCA] := NEW, FORW[NEW] : = LOCB BACK[LOCB] : = NEW, BACK[NEW] := LOCA. Exit LOCA LOCB Node A Node B x NEW Node N Gambar. Penyisipan node N
47 L A T I H A N. Jelaskan istilah pointer dan link dalam linked list.. Bagaimana kunjungan (traversal) terhadap suatu link list?. Buatlah suatu skema linked-list yang menggambarkan buah abjad terurut. Sajikan skema tersebut ke penyajian dalam memori.. Lakukan penghapusan dua elemen dari soal nomor di atas, yaitu elemen pertama dan elemen kelima.. Lakukan penambahan elemen di urutan elemen pertama dan ketujuh dari soal nomor di atas (jadi tidak urut).. Ubah pointer-pointer linknya sehingga data di soal nomor di atas menjadi terurut kembali.. Apa yang dimaksud dengan koleksi sampah (garbage collection) di linked-list?. Apa yang dimaksud dengan header linked list dan apa saja jenisnya?. Jelaskan perbedaan cara kerja one way list dan two way list?. Apa yang dimaksud dengan two way header list?. Buat program dengan bahasa pemrograman apapun untuk membuat mesin linked list yang bisa dilakukan untuk menyisip dan menghapus elemen data.
Struktur & Organisasi Data 2 LINKED LIST. LINKED LIST ATAU ONE-WAY LIST Adalah koleksi linier dari elemen data yang disebut Simpul atau Node.
LINKED LIST LINKED LIST ATAU ONE-WAY LIST Adalah koleksi linier dari elemen data yang disebut Simpul atau Node. Cara melinierkan urutan adalah dengan menggunakan Penuding atau Pointer. Setiap simpul terdiri
BAB 5 LINKED LIST. LINKED LIST ATAU ONE-WAY LIST Adalah koleksi linier dari elemen data yang disebut Simpul atau Node.
BAB 5 LINKED LIST LINKED LIST ATAU ONE-WAY LIST Adalah koleksi linier dari elemen data yang disebut Simpul atau. Cara melinierkan urutan adalah dengan menggunakan Penuding atau Pointer. Setiap simpul terdiri
Semua algoritma diasumsikan bahwa Linked List tersimpan di dalam memori dalam bentuk LIST(INFO, LINK, START, AVAIL)
ALGORITMA PENYISIPAN Terdiri dari : 1. Algoritma Penyisipan Simpul pada bagian awal list. 2. Algoritma Penyisipan Simpul sesudah suatu simpul yang diketahui lokasinya. 3. Algoritma Penyisipan Simpul ke
BAB V LINKED LIST. Pointer A 50 B Alamat Memori. Gambar 5-1 : Logika Linked List
BAB V LINKED LIST STRUKTUR BERKAIT. Struktur berkait adalah bentuk khusus dari list linier yang cara melinierkan urutannya dengan mengkaitkan setiap elemen datanya. Pointer A 50 B 100 50 Alamat Memori
Buku Ajar Struktur Data
B a g i a n Tujuan Instruksional Khusus Pokok Bahasan Mahasiswa mampu menjelaskan struktur data linier List berkait. Mahasiswa mampu menjelaskan operasi-operasi yang dilakukan pada struktur data List berkait.
Buku Ajar Struktur Data
BARU ITEM Gambar.. Penyisipan di awal List. Contoh.. Perhatikan lagi list test pada gambar.. Jika nilai test ditambahkan di awal list Geometri. Simulasi dari algoritma., ITEM =, INFO = TEST, = GEOM. INSFIRST(TEST,
QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.
QUEUE (ANTREAN) ANTREAN (Queue) Suatu bentuk khusus dari linear list, dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut REAR, dan operasi penghapusan (deletion)
QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)
QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN) Setelah pada Bab 3 yang lalu kita bahas tentang salah satu jenis daftar (list) linear, yakni stack, kali ini kita bahas jenis lain dari daftar linear,
03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e
03 LINKED LIST Slide 0 voice Pada perkuliahan ini kita akan membahas topik linked list atau senarai berkait. Slide 1 voice Terdapat tujuh bilangan bulat yang nilainya terurut secara menaik (ascending)
Linked List 6.3 & 7.3 NESTED LOOP
Linked List 6.3 & 7.3 NESTED LOOP 1 Linked List ( List yang di-link satu dengan lainnya ) 2 apa itu List? 3 Contoh sebuah LIST int A[5]; 0 1 2 3 4 Array satu dimensi Disebut juga : Vector Kadang-kadang
Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM TEORI PENUNJANG
Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM 1. Mengerti dalam penggunaan pointer. 2. Dapat membuat larik dinamik dan daftar berkait TEORI PENUNJANG
Lab. Teknik Informatika Struktur Data 1
2. POINTER dan SINGLE LINK LIST TUJUAN PRAKTIKUM 1. Praktikan mengetahui tipe struktur data baru yaitu tipe data Pointer. 2. Praktikan menggunakan pointer didalam pembuatan program dan dapat menerapkannya
Algoritma dan Struktur Data. Pertemuan 7 Linked List
Algoritma dan Struktur Data Pertemuan 7 Linked List Definitions Linked List Struktur data yang terdiri atas sekumpulan data bertipe sama Memperhatikan urutan Array Struktur data yang terdiri atas sekumpulan
LIST. Dewi Sartika, M.Kom
LIST PENDAHULUAN Linked List adalah sejumlah objek yang dihubungkan (linked) satu dengan yang lainnya membentuk suatu list. Objek adalah gabungan dari beberapa data (variable) yang dijadikan satu kelompok
2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.
1 ARRAY & LINKED LIST MODUL 1 Standar kompetensi: 1. Mahasiswa mengetahui perbedaan array dan linked list. 2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus. 3. Mahasiswa
BAB IX LINKED LIST (SENARAI BERANTAI)
BAB IX LINKED LIST (SENARAI BERANTAI) Linked list atau biasa disebut senarai berantai adalah suatu kumpulan data yang saling terhubung antar 1 data dengan data berikutnya. Suatu element (disebut dengan
1. Traversing Untuk algoritma traversing sama seperti pada single Link List
SENARAI BERANTAI DUA ARAH (DOUBLE LINKED LIST) Senarai Berantai Dua Arah (Double Linked List) merupakan bentuk pengembangan Senarai Berantai (Link List) yang tidak hanya memiliki pointer yang menunjuk
Buku Ajar Struktur Data
B a g i a n 5 Tujuan Instruksional Khusus Pokok Bahasan Mahasiswa mampu menjelaskan struktur data nonlinier Tree. Mahasiswa mampu memahami operasi pada struktur data Tree Struktur data Tree secara umum.
Pengenalan Algoritma & Struktur Data. Pertemuan ke-1
Pengenalan Algoritma & Struktur Data Pertemuan ke-1 Apa itu Struktur Data? PROGRAM ALGO RITMA STRUKTUR DATA Algoritma.. deskripsi langkah-langkah penyelesaian masalah yang tersusun secara logis 1. Ditulis
Algoritma Dan Struktur Data II
Algoritma Dan Struktur Data II Array dan Matriks Apa itu Struktur Data? PROGRAM ALGORITMA STRUKTUR DATA Algoritma.. deskripsi langkah-langkah penyelesaian masalah yang tersusun secara logis 1. ditulis
STRUKTUR DATA. Literatur
STRUKTUR DATA By : Sri Rezeki Candra Nursari 2 SKS Literatur Sjukani Moh, (2007), Struktur Data (Algoritma & Struktur Data 2) dengan C, C++, Mitra Wacana Media Utami Ema dkk, (2007), Struktur Data (Konsep
Algoritma dan Struktur Data. Linked List
Algoritma dan Struktur Data Linked List Syntax: struct nama_struct { tipe_data_1 nama_var_1; tipe_data_2 nama_var_2; tipe_data_3 nama_var_3; }; 2 KONSEP ALOKASI MEMORY DINAMIS 1. Deklarasikan pointer yang
Struktur Data. PDE - Struktur Data 1
Struktur Data Copyright@Ihsan Jatnika PDE - Struktur Data 1 Objektif Mengetahui maksud struktur data dan menjelaskan penggunaannya dalam pemrograman Mengetahui operasi yang terkait dengan struktur data
Type Data terdiri dari : - Data Tunggal : Integer, Real, Boolean dan Karakter. - Data Majemuk : String
Struktur dapat diartikan sebagai suatu susunan, bentuk, pola atau bangunan. Data dapat diartikan sebagai suatu fakta, segala sesuatu yang dapat dikodekan atau disimbolkan dengan kode-kode atau lambang-lambang
PERTEMUAN KE-6. Pertemuan 6
PERTEMUAN KE-6 Pertemuan 6 QUEUE (Antrian) Definisi: Queue (Antrian) adalah suatu bentuk khusus dari List Linier dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut
PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahka
LINKed LIST PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahkan saat dibutuhkan, tidak dialokasikan dengan
STRUKTUR DATA TIPE DATA DNA-STRUKTURDATA 1
STRUKTUR DATA TIPE DATA DNA-STRUKTURDATA 1 APA ITU STRUKTUR DATA Program algoritma dan struktur data Algoritma, langkah-langkah penyelesaian masalah yang tersusun secara logis. Contoh : mengurutkan data;
*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List
1. Array 1. Linear List 2. Stack 3. Queue 1. Apa? 2. Bagaimana cara implementasinya? 2. List 1. Connected List 2. Circular List 3. Doubly-linked List 4. Multi list structure 3. Tree Structure Sekumpulan
SEARCHING & SORTING. Pendahuluan
SEARCHING & SORTING Pendahuluan Sorting dan searching merupakan salah satu operasi dasar dalam ilmu komputer. Sorting merupakan suatu proses (operasi) yang mengurutkan data dalam suatu urutan yang diberikan
List Linear (Linked List) Farah Zakiyah Rahmanti 2014
List Linear (Linked List) Farah Zakiyah Rahmanti 2014 Overview Single Linked List Double Linked List Circular List SINGLE LINKED LIST Deskripsi Single linked list atau biasa disebut dengan linked list
DIG1G3 Implementasi Struktur Data
DIG1G3 Implementasi Struktur Data Program Studi Diploma III Teknik Informatika Fakultas Ilmu Terapan Telkom University Dosen: Cahyana, S.T., M.Kom. Indra Azimi, S.T., M.T. Tujuan Pertemuan 4 Mahasiswa
Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list
Universitas Muhammadiyah Sukabumi Artikel Struktur Data Oleh : fahmi fauzi Masukan Judul... 1. STACK DAN QUEUE DENGAN LINKED LIST Pengertian Linked list : sekumpulan elemen bertipe sama, yang mempunyai
POHON BINAR 7.1 POHON. Gambar 7.1. Contoh pohon berakar
POHON BINAR 7.1 POHON Pohon atau tree adalah salah satu bentuk graph terhubung yang tidak mengandung sirkuit. Karena merupakan graph terhubung, maka pada pohon selalu terdapat path atau jalur yang menghubungkan
Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List
Algoritma dan Struktur Data Pertemuan 9 Circular Linked List Struktur Circular Linked List plist A B C Node (elemen) circular linked list saling berkait melalui pointer. Bagian next sebuah node menunjuk
SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA
SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA MATA KULIAH : STRUKTUR DATA FAKULTAS : TEKNOLOGI INDUSTRI, ILMU KOMPUTER JURUSAN / JENJANG : INFORMAA, TEKNIK KOMPUTER / S1 KODE : KD-045326 Minggu Ke Pokok
BAB IX LINKED LIST (SENARAI BERANTAI)
BAB IX LINKED LIST (SENARAI BERANTAI) Double Linked List Double Linked List adalah suatu linked list yang mempunyai penunjuk yaitu penunjuk ke data sebelumnya dan berikutnya. Perhatikan gambar di bawah
Struktur Data. Queue (Antrian)
Struktur Data Queue (Antrian) Definisi Queue (Antrian) adalah list linier yang : 1. Dikenali elemen pertama (Head) dan elemen terakhirnya (Tail) 2. Aturan penyisipan dan penghapusan elemennya didefinisikan
BAB IV QUEUE ATAU ANTREAN
BAB IV QUEUE ATAU ANTREAN Queue atau antrean adalah suatu bentuk khusus dari list linier, dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang (REAR)
BAB 7 POHON BINAR R S U
BAB 7 POHON BINAR Pohon (Tree) adalah graf terhubung yang tidak mengandung sirkuit. Karena merupakan graf terhubung maka pada pohon selalu terdapat path atau jalur yang menghubungkan kedua simpul di dalam
SENARAI BERANTAI (LINK LIST)
SENARAI BERANTAI (LINK LIST) Salah satu solusi untuk mengatasi kekurangan array adalah dengan Linked List. Linked List (senarai berantai satu arah atau one way list) merupakan struktur data dinamis yang
Algoritma Pemrograman & Struktur Data
MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Linked List Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Fakultas Ilmu Informatika Komputer 03 87042 Abstract Penjelasan mengenai linked
Array. Array mempunyai dimensi : 1. Array Dimensi Satu (Vektor) 2. Array Dimensi Banyak. - Dimensi Dua (Matriks/Tabel) - Dimensi Tiga (Kubik).
Array Array merupakan bagian dasar pembentukan suatu struktur data yang lebih kompleks. Hampir setiap jenis struktur data kompleks dapat disajikan secara logik oleh array. Array : Suatu himpunan hingga
S T A C K ( T U M P U K A N )
S T A C K T U M P U K A N ) LINIER LIST Suatu struktur data umum yang berisi suatu kumpulan terurut dari elemen; jumlah elemen di dalam list dapat berubah-ubah. Linier list A yang terdiri dari T elemen
BAB II Senarai Berantai (Linked List)
BAB II Senarai Berantai (Linked List) Tujuan 1. Memahami pengertian linked list, gunanya dan dapat mengimplementasikan dalam pemrograman 2. Dapat mengidentifikasi permasalahan-permasalahan pemrograman
STRUKTUR DATA Pertemuan 1 s.d 8
STRUKTUR DATA Pertemuan 1 s.d 8 Sasaran: Meningkatkan: pemahaman pengetahuan tentang teori dasar struktur data dan penanganan data serta pembuatan algoritma dan penggunaan strukturd dalam pemrograman Materi
Struktur dan Organisasi Data 2 STRUKTUR DATA
STRUKTUR DATA PENDAHULUAN Struktur data adalah suatu koleksi atau kelompok data yang dapat dikarakterisasikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Algorithma : barisan langkah-langkah
BAB 1 TIPE DATA. Struktur Data 1. Sederhana : Array dan Record 2. Majemuk terdiri atas Linier Non Linier
TIPE DATA Struktur data adalah suatu koleksi atau kelompok data yang dapat dikarakterisasikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Data secara umum dapat dikategorikan : Tipe data
BAB 3 STACK (TUMPUKAN)
BAB 3 STACK (TUMPUKAN) LINIER LIST Suatu struktur data umum yang berisi suatu kumpulan terurut dari elemen; jumlah elemen di dalam list dapat berubah-ubah. Linier list A yang terdiri dari T elemen pada
A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul
struktur data fd [page 1 of 7] SENARAI BERANTAI Dalam pemakaian sehari-hari istilah senarai berantai (list) adalah kumpulan linier sejumlah data. Contohnya seperti daftar belanja harian, dimana setiap
BAB II STACK Atau TUMPUKAN
BAB II STACK Atau TUMPUKAN List Linear (Daftar Linear). List linier adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya disebut simpul (node). Simpul terdiri
Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.
Algoritma dan Struktur Data Ramos Somya, S.Kom., M.Cs. Penggunaan record dalam jumlah yang banyak alokasi memory konvensional tidak bisa diandalkan. Misal kita akan bekerja dengan file yang menyimpan sangat
Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri
Senarai berantai linked list Pertemuan keenam Struktur data st3telkom.ac.id by : tenia wahyuningrum & Sisilia Thya Safitri Senarai berantai Dalam pemakaian sehari-hari istilah senarai berantai (list) adalah
Algoritma dan Struktur Data. Ramos Somya
Algoritma dan Struktur Data Ramos Somya Penggunaan record dalam jumlah yang banyak alokasi memory konvensional tidak bisa diandalkan. Misal kita akan bekerja dengan file yang menyimpan sangat banyak record,
STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR
STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR Sebuah daftar linear atau linear list, merupakan suatu struktur data umum yang terbentuk dari barisan hingga yang terurut) dari satuan data ataupun dari record. Untuk
ALGORITMA DAN STRUKTUR DATA
Modul ke: 03 Fitrianingsih, Fakultas FASILKOM ALGORITMA DAN STRUKTUR DATA OLEH : Skom., MMSI Program Studi Sistem Informasi Bagian Isi POINTER POINTER DAN ADDRESS POINTER DAN FUNCTION LINKED LIST ALGORITMA
BAB 1 TIPE DATA. Selain itu terdapat operasi MOD (Modulo) adalah sisa dari pembagian Contoh : 27 MOD 4 = 3
BAB 1 TIPE DATA Struktur data adalah suatu koleksi atau kelompok data yang dapat dikarakterisasikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Data secara umum dapat dikategorikan :
MODUL 6 SINGLE & DOUBLE LINKED LIST
MODUL 6 SINGLE & DOUBLE LINKED LIST 1. Tujuan Instruksional Umum a. Mahasiswa dapat melakukan perancangan aplikasi menggunakan struktur Linked List (Senarai Berkait) b. Mahasiswa mampu melakukan analisis
Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;
Maka sekarang kita mempunyai dua buah simpul yang ditunjuk oleh P1 dan P2. Setelah itu kita dapat melakukan pengaksesan data, yaitu dengan menuliskan : P1^.Nama_Peg := Ariswan ; P1^.Alamat := Semarang
POHON CARI BINER (Binary Search Tree)
POHON CARI BINER (Binary Search Tree) 50 24 70 10 41 61 90 3 12 35 47 55 67 80 99 POHON CARI BINER (Binary Search Tree) Definisi : bila N adalah simpul dari pohon maka nilai semua simpul pada subpohon
Single Linked List (1)
Praktikum 5 Single Linked List (1) A. TUJUAN PEMBELAJARAN Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu: 1. Memahami konsep membangun single linked list 2. Memahami konsep operasi
IX. Implementasi ADT : Stacks & Queues. Operasi dasar Contoh kegunaan Implementasi Array-based dan linked list-based
IX. Implementasi ADT : Stacks & Queues STRUKTUR DATA 1 Outline ADT Stacks Operasi dasar Contoh kegunaan Implementasi Array-based dan linked list-based ADT Queues Operasi dasar Contoh kegunaan Implementasi
1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB
Pertemuan Ke 5 : List Linier (Linked List) Referensi: 1. Inggriani Liem. 2003. Catatan Kuliah & Pemrograman, Jurusan Teknik Informatika ITB 2. Rinaldi Munir. 2003. dan Pemrograman II. Bandung : Penerbit
SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN
SEKOLAH TINGGI MANAJEMEN INFORMAA KOMPUTER JAKARTA STIK SATUAN ACARA PERKULIAHAN Mata : STRUKTUR DATA Kode Mata : TK - 25322 Jurusan / Jenjang : D3 TEKNIK KOMPUTER Tujuan Instruksional Umum : Memberikan
POINTER PADA PASCAL. <nama_var> : ^<tipe_data>; <nama_var> : pointer;
POINTER PADA PASCAL PEMBAHASAN : 1. Mengenal tipe data Pointer. 2. Manipulasi memori lewat Pointer bertipe dan tak bertipe. 3. Linked List; meliputi operasi inisialisasi, menambah node baru, menyisipkan
Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List
Algoritma dan Struktur Data Pertemuan 8 Doubly Linked List phead Struktur Doubly Linked List A B C Node-node doubly linked list saling berkait melalui pointer. Bagian left sebuah node menunjuk node selanjutnya.
3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1
3. DOUBLE LINK LIST TUJUAN PRAKTIKUM Setelah mengenal tipe data single link list maka : 1. Praktikan diharapkan dapat menggunakan double link list. 2. Praktikan diharapkan mengerti perbedaan antara single
MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )
MAKALAH STRUKTUR DATA DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH (14.1.03.03.0024) FAKULTAS TEKNIK PROGRAM STUDI SISTEM INFORMASI UNIVERSITAS NUSANTARA PGRI KEDIRI
KONSEP POINTER DAN LINKED LIST
Pertemuan 3 KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut
Review : Sifat Implementasi Linear List dengan Array
Pertemuan 10 Linked List Disusun oleh : PH. Prima Rosa, S.Si., M.Sc. Sri Hartati Wijono, S.Si. 2003/2004 Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 1 Review : Sifat Implementasi Linear List dengan
LAPORAN PRAKTIKUM IX. Oleh:
LAPORAN PRAKTIKUM IX LINKED LIST Disusun untuk Memenuhi Matakuliah Praktikum Algoritma Struktur Data Dibimbing oleh Ibu Annisa Puspa Kirana, S. Kom, M. Kom Oleh: Dwitha Fajri Ramadhani 160533611410 Ika
Double linked list. Gambar 1. Double linket list dengan empat simpul Deklarasi Double Linked List di dalam Pascal :
Double linked list Link list yang kita pelajari sebelumnya hanya mempunyai sebuah pointer pada setiap simpulnya. Hal ini merupakan kelemahan bahwa link list tersebut hanya bisa dibaca dalam satu arah saja,
Silabus Struktur Data. Bandung 2013
Silabus Struktur Data Bandung 2013 Silabus u Menjelaskan Varian dan Invarian u Membuat Alur Logika pemrograman u Menerapkan Pengelolaan Array u Memelihara Pekerjaan secara prakds u Menerapkan konsep data
ALGORITMA & PEMROGRAMAN
ALGORITMA & PEMROGRAMAN Oleh: Tim Algoritma & Pemrograman IF Linked List PENGERTIAN LINKED LIST Salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung,
Sub Pokok Bahasan dan Sasaran Belajar
SATUAN ACARA PERKULIAHAN MATA KULIAH : STRUKTUR DATA KODE ; TI11. C227 / 4 SKS JURUSAN SISTEM INFORMASI / S1 FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI Minggu Ke (1) Pokok Bahasan TIU (2) Sub Pokok
SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA
Mata Kuliah Kode / SKS Program Studi Fakultas : Struktur Organisasi Data : IT012239 / 2 SKS : Sistem Komputer : Ilmu Komputer & Teknologi Informasi 1 Jenis-jenis data Menjelaskan mendefinisikan jenis-jenis.
STRUKTUR DATA Pertemuan 1 s.d 8
STRUKTUR DATA Pertemuan 1 s.d 8 Sasaran: Meningkatkan: pemahaman pengetahuan tentang teori dasar struktur data dan penanganan data serta pembuatan algoritma dan penggunaan strukturd dalam pemrograman Materi
KONSEP POINTER DAN LINKED LIST
Pertemuan 4 KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut
KONSEP POINTER DAN LINKED LIST
Pertemuan 4 KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut
Algoritma Dan Struktur Data II
Algoritma Dan Struktur Data II List, Stack [email protected] putuastawa.wordpress.com Beberapa Jenis Struktur Data 1. Array 1. Linear List 2. Stack 3. Queue 1. Apa? 2. Bagaimana cara implementasinya?
BAB III QUEUE (ANTRIAN)
BAB III QUEUE (ANTRIAN) 3.1 Pengertian Antrian Antrian (Queue) merupakan kumpulan data yang mana penambahan elemen hanya bias dilakukan pada suatu ujung yaitu rear /tail / belakang, dan pengha[usan dilakukan
KONSEP POINTER DAN LINKED LIST
Pertemuan 4 KONSEP POINTER DAN LINKED LIST Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya, maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu perubah yang disebut
Bagian I. Studi Kasus [82] Tanda tangan:
UJIAN TENGAH SEMESTER GANJIL NIM: 2010/2011 dan Struktur Data / CS2014 Nama : HARI : Kamis, 30 Oktober 2009 WAKTU : 110 menit DOSEN : TIM SIFAT : Tutup Buku, No Electronic Device Tanda tangan: Petunjuk:
Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST
BAB 6 LINKED LIST 1. Tujuan Instruksional Umum a. Mahasiswa dapat melakukan perancangan aplikasi menggunakan struktur Linked List (Senarai Berkait) b. Mahasiswa mampu melakukan analisis pada algoritma
Struktur dan Organisasi Data 2 POHON BINAR
POHON BINR Pohon (Tree) adalah graf terhubung yang tidak mengandung sirkuit. Karena merupakan graf terhubung maka pada pohon selalu terdapat path atau jalur yang menghubungkan kedua simpul di dalam pohon.
BAB VI SORTIR ATAU PENGURUTAN
BAB VI SORTIR ATAU PENGURUTAN SORTIR TERHADAP RECORD File adalah Himpunan record, misalkan suatu perusahaan mempunyai file yang berisi seluruh data yang diperlukan oleh perusahaan itu tentang para pegawainya.
Implementasi Struktur Data Rope menggunakan Binary Tree dan Aplikasinya dalam Pengolahan Teks Sangat Panjang
Implementasi Struktur Data Rope menggunakan Binary Tree dan Aplikasinya dalam Pengolahan Teks Sangat Panjang Edwin Rachman (NIM 0) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika
GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)
Mata Kuliah : Algoritma II Bobot Mata Kuliah : 3 Sks GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP) Deskripsi Mata Kuliah : Struktur Stack (satu dan dua sisi), Queue (Linear Queu, Circular Queue, Double Ended
Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD
Pertemuan 4 : Definisi & Operasi Disusun oleh : PH. Prima Rosa, S.Si., M.Sc. Sri Hartati Wijono, S.Si. 2003/2004 Pert. 4b Struktur Data - FMIPA USD - 2003 Hal. 1 Struktur Data PROBLEM ALGORITHM DATA IMPLEMENTATION
Pada kondisi ini proses penghapusan tidak bisa dilakukan Kondisi linked list memiliki hanya 1 data{satu simpul} Akhir. Akhir
3. Penghapusan a. Penghapusan di awal/depan Penghapusan data di awal adalah proses menghapus simpul pertama (yang ditunjuk oleh variabel pointer ), sehingga variabel pointer akan berpindah ke simpul berikutnya.
Algoritma Pemrograman & Struktur Data
MODUL PERKULIAHAN Algoritma Pemrograman & Struktur Data Stack Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Fakultas Ilmu Informatika Komputer 04 87042 Abstract Penjelasan mengenai stack dan penggunaannya
Organisasi File Multi Key y( (Index)
Organisasi File Multi Key y( (Index) Pengertian Organisasi berkas yang memperbolehkan record diakses oleh lebih dari satu key field disebut organisasi berkas dengan banyak key. Ada banyak teknik yang dipakai
Struktur Data Linier. Input. Program untuk menyelesaikan masalah. Algoritma Penyelesaian. Proses. Masalah. Struktur Data. Output
Tujuan Mahasiswa mampu memilih struktur/type data yang tepat pada setiap variabel yang digunakan dalam program guna meningkatkan efisiensi penggunaan memori (Space) sehingga berdampak pada peningkatan
PERKENALAN STRUKTUR DATA. Firmansyah, S.Kom
PERKENALAN STRUKTUR DATA Firmansyah, S.Kom A. TEMA DAN TUJUAN KEGIATAN PEMBELAJARAN 1. Tema Perkenalan Struktur Data 2. Fokus Pembahasan Materi Pokok 1. Definisi Struktur Data 2. Tipe-tipe data 3. Algoritma
A. TUJUAN PEMBELAJARAN
Praktikum 3 Queue (Antrian) A. TUJUAN PEMBELAJARAN Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu: 1. Memahami stuktur data yang digunakan pada antrian baik yang berupa array maupun
Gambar 3.1. Circular Single Linked List. Deklarasi bisa dilihat kembali di Single Linked List atau Double Linked List.
III. Circular Linked List Circular Linked List adalah suatu linked list yang tidak memiliki nilai nil/null untuk medan sambungannya. Perhatikan Gambar 3.1 dan Gambar 3.2. Gambar 3.1. Circular Single Linked
BAB XI Manipulasi Binary Tree
www.hansmichael.com - Bab XI. Manipulasi Binary Tree BAB XI Manipulasi Binary Tree 11.1 Insert Node 11.2 Search Node 11.3 Delete Node 11.4 Copy Tree 11.5 Latihan Soal Binary tree seringkali diterapkan
KERUGIAN DAN KEUNTUNGAN LINKED LIST
KERUGIAN AN KEUNTUNGAN LINKE LIST KERUGIANNYA AALAH : 1. iperlukan ruang tambahan untuk menyatakan/tempat field pointer. 2. iperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked list.
Stack. Gambar 1.1 Stack
Stack Stack adalah struktur data yang memiliki sifat last in first out. Struktur dari stack yang dapat kita lihat sehari-hari adalah : tumpukan (lihat gambar 1.1) Gambar 1.1 Stack Terdapat 2 (dua) operasi
Jadi satu simpul di double linked list adalah sebagai berikut : Info. Kiri. Kanan
II. Double Linked List Double Linked List adalah suatu linked list yang mempunyai penunjuk yaitu penunjuk ke simpul sebelumnya dan ke simpul berikutnya. Perhatikan gambar di bawah ini : 5 Deklarasi secara
DIG1G3 Implementasi Struktur Data
DIG1G3 Implementasi Struktur Data Program Studi Diploma III Teknik Informatika Fakultas Ilmu Terapan Telkom University Dosen: Cahyana, S.T., M.Kom. Indra Azimi, S.T., M.T. 2 Stack (Tumpukan) Stack is a
