Linked List 6 3 7 3 NESTED LOOP

  • Slides: 26
Download presentation
Linked List 6. 3 & 7. 3 NESTED LOOP BEBERAPA CONTOH SOAL 1

Linked List 6. 3 & 7. 3 NESTED LOOP BEBERAPA CONTOH SOAL 1

CONTOH SOAL 2

CONTOH SOAL 2

SOAL-1 (1) 12 (2) 17 xx LINK INFO LINK INFO 25 INFO LAST FIRST

SOAL-1 (1) 12 (2) 17 xx LINK INFO LINK INFO 25 INFO LAST FIRST xx (3) Sudah ada Linear Singly Linked List. Jumlah simpul lebih dari 10. Simpul awal ada diujung paling kiri, ditunjuk oleh pointer FIRST Simpul terakhir ada diujung paling kanan, ditunjuk oleh poiner LAST Link simpul terakhir nilainya = NULL. Susun algoritma untuk menempatkan pointer Q sehingga menunjuk simpul no (7) 3

25 (1) 12 (2) 17 10 22 14 20 LINK INFO LINK INFO FIRST

25 (1) 12 (2) 17 10 22 14 20 LINK INFO LINK INFO FIRST INFO Q 15 (3) Q = FIRST; ……………… pointer Q menunjuk simpul (1) 4

25 (1) 12 (2) 17 10 22 14 20 LINK INFO LINK INFO LINK

25 (1) 12 (2) 17 10 22 14 20 LINK INFO LINK INFO LINK FIRST INFO Q 15 (3) Q = FIRST; ……………… pointer Q menunjuk simpul (1) Q = Q->LINK; …………… pointer Q menunjuk simpul (2) 5

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7)

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7) Q = FIRST; ……………… pointer Q menunjuk simpul (1) Q = Q->LINK; …………… pointer Q menunjuk simpul (2) Q = Q->LINK; …………… pointer Q menunjuk simpul (3) LINK INFO LINK INFO LINK FIRST INFO Q 15 6

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7)

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7) Q = FIRST; ……………… pointer Q menunjuk simpul (1) Q = Q->LINK; …………… pointer Q menunjuk simpul (2) Q = Q->LINK; …………… pointer Q menunjuk simpul (3) Q = Q->LINK; …………… pointer Q menunjuk simpul (4) LINK INFO LINK INFO LINK FIRST INFO Q 15 7

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7)

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7) Q = FIRST; ……………… pointer Q menunjuk simpul (1) Q = Q->LINK; …………… pointer Q menunjuk simpul (2) Q = Q->LINK; …………… pointer Q menunjuk simpul (3) Q = Q->LINK; …………… pointer Q menunjuk simpul (4) Q = Q->LINK; …………… pointer Q menunjuk simpul (5) LINK INFO LINK INFO LINK FIRST INFO Q 15 8

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7)

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7) Q = FIRST; ……………… pointer Q menunjuk simpul (1) Q = Q->LINK; …………… pointer Q menunjuk simpul (2) Q = Q->LINK; …………… pointer Q menunjuk simpul (3) Q = Q->LINK; …………… pointer Q menunjuk simpul (4) Q = Q->LINK; …………… pointer Q menunjuk simpul (5) Q = Q->LINK; …………… pointer Q menunjuk simpul (6) LINK INFO LINK INFO LINK FIRST INFO Q 15 9

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7)

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7) Q = FIRST; ……………… pointer Q menunjuk simpul (1) Q = Q->LINK; …………… pointer Q menunjuk simpul (2) Q = Q->LINK; …………… pointer Q menunjuk simpul (3) Q = Q->LINK; …………… pointer Q menunjuk simpul (4) Q = Q->LINK; …………… pointer Q menunjuk simpul (5) Q = Q->LINK; …………… pointer Q menunjuk simpul (6) Q = Q->LINK; …………… pointer Q menunjuk simpul (7) LINK INFO LINK INFO LINK FIRST INFO Q 15 10

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7)

25 (1) 12 (2) 17 10 22 14 20 (3) (4) (5) (6) (7) Q = FIRST; for( I=1; I<=6; I++) { Q = Q->LINK; ) LINK INFO LINK INFO LINK FIRST INFO Q 15 Akan menempatkan pointer Q disimpul no (7), atau menunjuk simpul (7) 11

SOAL-2 (1) 12 (2) 17 xx LINK INFO LINK INFO 25 INFO LAST FIRST

SOAL-2 (1) 12 (2) 17 xx LINK INFO LINK INFO 25 INFO LAST FIRST xx (3) Sudah ada Linear Singly Linked List. Jumlah simpul lebih dari 10. Simpul awal ada diujung paling kiri, ditunjuk oleh pointer FIRST Simpul terakhir ada diujung paling kanan, ditunjuk oleh poiner LAST Link simpul terakhir nilainya = NULL. Susun algoritma untuk menempatkan menghapus atau men. DELETE simpul no (8) Q = FIRST; for(I=1; I<=6: I++); { Q = Q->LINK; } R = Q->LINK; Q->LINK = R->LINK; free( R ); Menempatkan pointer Q Pada simpul (7) Menghapus simpul (8) 12

SOAL-3 (1) 12 (2) 17 xx LINK INFO LINK INFO 25 INFO LAST FIRST

SOAL-3 (1) 12 (2) 17 xx LINK INFO LINK INFO 25 INFO LAST FIRST xx (3) Sudah ada Linear Singly Linked List. Jumlah simpul lebih dari 1. Simpul awal ada diujung paling kiri, ditunjuk oleh pointer FIRST Simpul terakhir ada diujung paling kanan, ditunjuk oleh poiner LAST Link simpul terakhir nilainya = NULL. Susun algoritma untuk menghitung jumlah simpul 13

Q (1) Prinsip : 12 (2) xx 17 LINK INFO LINK INFO 25 INFO

Q (1) Prinsip : 12 (2) xx 17 LINK INFO LINK INFO 25 INFO LAST FIRST xx (3) Q menujuk simpul (1) Jum dibuat = 1; Q = FIRST; Jum = 1; 1 Jum 14

SOAL-3 (1) 12 (2) 17 xx LINK INFO LINK INFO 25 INFO LAST FIRST

SOAL-3 (1) 12 (2) 17 xx LINK INFO LINK INFO 25 INFO LAST FIRST xx (3) Sudah ada Linear Singly Linked List. Jumlah simpul lebih dari 1. Simpul awal ada diujung paling kiri, ditunjuk oleh pointer FIRST Simpul terakhir ada diujung paling kanan, ditunjuk oleh poiner LAST Link simpul terakhir nilainya = NULL. Susun algoritma untuk menghitung dan mencetak jumlah simpul Q = FIRST; Jum = 1; while (Q != LAST) { Q = Q->LINK; Jum = Jum + 1; } printf(“%i”, JUM); Atau: Q = FIRST; Jum = 1; while (Q->LINK != NULL) { Q = Q->LINK; Jum = Jum + 1; } printf(“%i”, JUM); Atau: Q = FIRST; Jum = 0; while (Q != NULL) { Jum = Jum + 1; Q = Q->LINK; } printf(“%i”, JUM); 15

SOAL-4 (1) 12 (2) 17 xx LINK INFO LINK INFO 25 INFO LAST FIRST

SOAL-4 (1) 12 (2) 17 xx LINK INFO LINK INFO 25 INFO LAST FIRST xx (3) Sudah ada Linear Singly Linked List. Jumlah simpul lebih dari 1. Simpul awal ada diujung paling kiri, ditunjuk oleh pointer FIRST Simpul terakhir ada diujung paling kanan, ditunjuk oleh poiner LAST Link simpul terakhir nilainya = NULL. Susun algoritma untuk menghitung dan mencetak Total INFO Atau: Q = FIRST; Tot = Q->INFO; Tot = 0; while (Q != LAST) while (Q->LINK != NULL) while (Q != NULL) { Q = Q->LINK; { Tot=Tot+Q->INFO; Q = Q->LINK; } } } printf(“%i”, Tot); 16

17

17

Perhatikan penggalan Linked digambarkan berikut ini, 15 (1) 1000 5 27 (2) 800 yang

Perhatikan penggalan Linked digambarkan berikut ini, 15 (1) 1000 5 27 (2) 800 yang 6 22 (3) 1400 7 LINK 4 LINK 3 INFO S INFO LINK 2 R INFO LINK 1 Q INFO P List 17 (4) 1100 8 Terlihat ada 4 buah simpul dan 8 buah pointer dari pointer (1) sampai dengan pointer (8). Simpul (1) berada di lokasi 1000 ( alamatnya = H 1000), Simpul (2) di lokasi 800 dan seterusnya. Soal : 1. Sebutkan nama dan isi tiap-tiap pointer 18

4. 1. 6. Soal Latihan Mandiri 15 (1) 1000 27 5 (2) 800 6

4. 1. 6. Soal Latihan Mandiri 15 (1) 1000 27 5 (2) 800 6 22 (3) 1400 7 LI NK 4 INFO S LI NK R 3 INFO 2 LI NK INFO Q LI NK P 1 INFO 1). Perhatikan penggalan Linked List yang digambarkan berikut ini, 17 (4) 1100 8 Terlihat ada 4 buah simpul dan 8 buah pointer dari pointer (1) sampai dengan pointer (8). Simpul (1) berada di lokasi 1000 ( alamatnya = H 1000), Simpul (2) di lokasi 800 dan seterusnya. Soal : 1. Sebutkan nama dan isi tiap-tiap pointer 2. Sebutkan pointer-pointer yang bernilai sama (yang isinya sama) 3. Sebutkan TRUE atau FALSE kondisi pada instruksi IF berikut ini : 19

4. 1. 6. Soal Latihan Mandiri 15 (1) 1000 27 5 (2) 800 6

4. 1. 6. Soal Latihan Mandiri 15 (1) 1000 27 5 (2) 800 6 22 (3) 1400 7 LI NK 4 INFO S LI NK R 3 INFO 2 LI NK INFO Q LI NK P 1 INFO 1). Perhatikan penggalan Linked List yang digambarkan berikut ini, 17 (4) 1100 8 Terlihat ada 4 buah simpul dan 8 buah pointer dari pointer (1) sampai dengan pointer (8). Simpul (1) berada di lokasi 1000 ( alamatnya = H 1000), Simpul (2) di lokasi 800 dan seterusnya. Soal : 1. Sebutkan nama dan isi tiap-tiap pointer 2. Sebutkan pointer-pointer yang bernilai sama (yang isinya sama) 3. Sebutkan TRUE atau FALSE kondisi pada instruksi IF berikut ini : a. b. c. d. e. f. g. if(P->LIKK == R) if(Q->LINK == R->LINK) if(Q->LINK == S->LINK) if(Q == R) if(Q->LINK == R) if(R->LINK->INFO == 22) if(Q->INFO == 27) 20

4. 1. 6. Soal Latihan Mandiri 15 27 5 (1) 22 (3) 7 1400

4. 1. 6. Soal Latihan Mandiri 15 27 5 (1) 22 (3) 7 1400 800 LI NK 4 6 (2) 1000 S INFO R 3 LI NK 2 LI NK INFO Q LI NK INFO P 1 INFO 1). Perhatikan penggalan Linked List yang digambarkan berikut ini, 17 (4) 1100 8 Terlihat ada 4 buah simpul dan 8 buah pointer dari pointer (1) sampai dengan pointer (8). Simpul (1) berada di lokasi 1000 ( alamatnya = H 1000), Simpul (2) di lokasi 800 dan seterusnya. Soal : 1. Sebutkan nama dan isi tiap-tiap pointer 2. Sebutkan pointer-pointer yang bernilai sama (yang isinya sama) a. FALSE if(P->LIKK == R) 3. Sebutkan TRUE atau kondisi pada instruksi IF berikut ini : 25 (1) 27 12 LINK dari simpul terakhir nilainya INFO LAST LI NK INFO FIRST LI NK ditunjuk oleh pointer LAST. Jumlah simpul tepatnya tidak diketahui, tapi dipastikan lebih dari 10 buah simpul. = NULL. INFO 2). b. if(Q->LINK == R->LINK) c. if(Q->LINK == S->LINK) d. if(Q == R) e. if(Q->LINK == R) f. if(R->LINK->INFO == 22) Sudah ada Linked List seperti yang diilustrasikan g. if(Q->INFO == 27)pada gambarkan berikut ini, Simpul pertama ditunjuk oleh pointer FIRST, dan simpul terakhir 14 (2) Soal : Susun Algoritma untuk : A. Menempatkan pointer Q sehingga menunjuk simpul no (1) B. Menempatkan pointer Q sehingga menujuk simpul no (7) C. Menempatkan pointer Q sehingga menunjuk simpul akhir D. Menempatkan pointer Q di simpul dengan nilai INFO = 50 soal D dan E dianggap yangkiri) nilaisimpul INFOnya = 50 pasti ada, dan hanya ada satu buah simpul dan bukan E. Untuk Menempatkan pointer Q didepansimpul (disebelah dengan nilai INFO = 50 merupakan simpul pertama. 21 144

4. 1. 6. Soal Latihan Mandiri 15 27 5 (1) 22 (3) 7 1400

4. 1. 6. Soal Latihan Mandiri 15 27 5 (1) 22 (3) 7 1400 800 LI NK 4 6 (2) 1000 S INFO R 3 LI NK 2 LI NK INFO Q LI NK INFO P 1 INFO 1). Perhatikan penggalan Linked List yang digambarkan berikut ini, 17 (4) 1100 8 Terlihat ada 4 buah simpul dan 8 buah pointer dari pointer (1) sampai dengan pointer (8). Simpul (1) berada di lokasi 1000 ( alamatnya = H 1000), Simpul (2) di lokasi 800 dan seterusnya. Soal : 1. Sebutkan nama dan isi tiap-tiap pointer 2. Sebutkan pointer-pointer yang bernilai sama (yang isinya sama) a. FALSE if(P->LIKK == R) 3. Sebutkan TRUE atau kondisi pada instruksi IF berikut ini : 25 (1) 27 12 LINK dari simpul terakhir nilainya INFO LAST LI NK INFO FIRST LI NK ditunjuk oleh pointer LAST. Jumlah simpul tepatnya tidak diketahui, tapi dipastikan lebih dari 10 buah simpul. = NULL. INFO 2). b. if(Q->LINK == R->LINK) c. if(Q->LINK == S->LINK) d. if(Q == R) e. if(Q->LINK == R) f. if(R->LINK->INFO == 22) Sudah ada Linked List seperti yang diilustrasikan g. if(Q->INFO == 27)pada gambarkan berikut ini, Simpul pertama ditunjuk oleh pointer FIRST, dan simpul terakhir 14 (2) Soal : Susun Algoritma untuk : A. Menempatkan pointer Q sehingga menunjuk simpul no (1) B. Menempatkan pointer Q sehingga menujuk simpul no (7) C. Menempatkan pointer Q sehingga menunjuk simpul akhir D. Menempatkan pointer Q di simpul dengan nilai INFO = 50 soal D dan E dianggap yangkiri) nilaisimpul INFOnya = 50 pasti ada, dan hanya ada satu buah simpul dan bukan E. Untuk Menempatkan pointer Q didepansimpul (disebelah dengan nilai INFO = 50 merupakan simpul pertama. 22 144

25 (1) 27 12 LI NK INFO LAST LI NK INFO FIRST LI NK

25 (1) 27 12 LI NK INFO LAST LI NK INFO FIRST LI NK Sudah ada Linked List seperti yang diilustrasikan pada gambarkan berikut ini, Simpul pertama ditunjuk oleh pointer FIRST, dan simpul terakhir ditunjuk oleh pointer LAST. Jumlah simpul tepatnya tidak diketahui, tapi dipastikan lebih dari 10 buah. LINK dari simpul terakhir nilainya = NULL. INFO 3). 14 (2) Soal. Susun Algoritma untuk : A. Menghitung dan mencetak jumlah simpul. B. Menghitung dan mencetak Total INFO ( 25+12 +………. + 27+14) C. Mencetak semua nilai INFO ke layar 4). jumlah simpul yang nilai INFOnya = 50 Sudah ada Linked D. List. Mencetak seperti yang diilustrasikan pada Soal 3) Sudah dibuat sebuah simpul baru yang ditunjuk oleh pointer P dan P->INFO sudah diisi Soal : Susun program (penggalan program) atau fungsi untuk menginsert simpul baru tersebut : A. Didepan simpul pertama, sehingga simpul baru menjadi simpul pertama B. dibelakang simpul terakhir, sehingga simpul baru tersebut menjadi simpul terakhir. C. Diantara simpul no (7) dan simpul no (8). D. Dibelakang simpul yang nilai NIFOnya = 50. Didepan nilai INFOnya = 50. Catatan. E. : Untuk soalsimpul D dan yang E dianggap simpul yang nilai INFOnya = 50, pasti ada, dan hanya ada satu buah. 5). Sudah ada Linked List seperti yang diilustrasikan pada Soal 3). Soal. Susun program atau penggalan program atau fungsi untuk mendelete : A. Simpul pertama, sehingga simpul kedua menjadi simpul pertama yang ditunjuk oleh pointer FIRST. B. Simpul no(8), sehingga simpul no (7) tersambung dengan simpul no (9). C. Simpul no (5), (6), dan (7). sehingga simpul (4) tersambung dengan simpul (8) D. Simpul dengan nilai INFO = 50, bila simpul ini dipastikan ada , dan ada hanya satu buah, dan bukan merupakan simpul pertama atau simpul terakhir E. Simpul dengan nilai INFO = 50, bila simpul ini dipastikan ada , dan ada hanya satu buah dan mungkin merupakan simpul pertama, simpul kedua, dan seterusnya, dan mungkin juga merupakan simpul terakhir. F. Semua simpul yang nilai INFOnya = 50, bila dianggap simpul yang nilainya INFOnya = 50 lebih dari satu, dan bukan merupakan simpul pertama juga bukan merupakan simpul terakhir G. Semua simpul yang ada. 23 145

75 57 52 (1) INFO LAST LI NK INFO LI NK FIRST INFO Sudah

75 57 52 (1) INFO LAST LI NK INFO LI NK FIRST INFO Sudah ada Linked List seperti yang diilustrasikan pada gambarkan berikut ini, Simpul pertama ditunjuk oleh pointer FIRST, dan simpul terakhir ditunjuk oleh pointer LAST. Jumlah simpul tepatnya tidak diketahui, tapi dipastikan lebih dari 10 buah. LINK dari simpul terakhir nilainya = NULL. INFO 6). 84 (2) Soal. Susun program atau penggalan program atau fungsi untuk menghapus semua simpul yang nilai INFOnya = 50. Simpul yang nilai INFOnya = 50, mungkin ada, mungkin juga tidak ada. Bila ada mungkin ada satu, dua, bahkan mungkin semua simpul nilai INFOnya = 50. 7). Sudah ada Linked List seperti yang diilustrasikan pada Soal no 6 diatas. Soal. Susun program atau penggalan program atau fungsi untuk : A. Memeriksa apakah ada simpul yang nilai INFOnya = 50. Bila ada, cetak perkataan “ADA”, dan bila tidak ada cetak perkataan “TIDAK ADA” B. Sama dengan soal A, bila ada , cetak perkataan “ADA” dan juga mencetak 72 (1) 87 57 90 64 INFO LAST LI NK INFO LI NK FIRST INFO ada berapa buah simpul yang nilai INFOnya = 50. 8). Sudah Linear Singly Linked List. Jumlah simpul lebih dari 10. INFO berisi nilai-nilai ujian mahasiswa seperti ilustrasi berikut ini, 75 (2) Soal. Susun algoritma untuk : ( Semua soal tidak terkait satu sama lain) 1. Menghapus simpul yang nilai INFOnya terkecil. Bila dipastikan simpulnya hanya ada satu buah. 2. Menghapus semua simpul yang nilai INFOnya terkecil. Bila ada kemungkinan nilai terkecil lebih dari satu buah. Tapi dipastikan bukan semua simpul. 3. Mencetak nilai INFO terkecil dan terbesar. 146 24

52 LI NK 84 77 INFO LAST INFO LI NK 60 57 (1) INFO

52 LI NK 84 77 INFO LAST INFO LI NK 60 57 (1) INFO LI NK FIRST INFO 9). Sudah Linear Singly Linked List. Jumlah simpul lebih dari 10. INFO berisi nilai-nilai ujian mahasiswa yang urut menaik seperti ilustrasi berikut ini, 90 (2) Soal. Susun algoritma untuk : ( Semua soal tidak terkait satu sama lain) 1. Menghapus semua simpul yang nilai INFOnya lebih kecil dari 60. 2. Menghapus semua simpul yang nilai INFOnya >= 85. 3. Menginput sebuah nilai dari keyboard, dan menginsert nilai tersebut sebagai sebuah simpul dalam Linked List yang sudah ada tersebut. 10 LI NK INFO LI NK 24 5 7 (1) (2) 15 LI NK INFO (2) LI NK INFO 17 12 (1) B LI NK INFO A INFO 10). Sudah ada dua buah Linked List ( sebut saja A dan B) seperti yang diilustrasikan pada gambarkan berikut ini, 30 Nilai INFO kedua Linked List diatas, sudah tersusun urut nilai menaik. 5 7 (1) (2) 10 15 12 17 24 INFO LI NK sehingga Linked List B tergabung ke Linked List A sedemikian rupa INFO LI NK INFO A LI NK Susun algoritma untuk menggabung (merge) kedua Linked List diatas sehingga nilai INFOnya urut menaik seperti ilustrasi berikut ini : INFO Soal. 30 Catatan : Gambar diatas, hanyalah ilustrasi. Jumlah simpul kedua Linked List, belum tentu 4 buah dan belum tentu sama jumlah simpul kedua buah Linked List tersebut. 147 25

11). Sudah ada Linked List seperti yang diilustrasikan pada gambarkan berikut ini. Simpul pertama

11). Sudah ada Linked List seperti yang diilustrasikan pada gambarkan berikut ini. Simpul pertama ditunjuk oleh pointer FIRST, dan simpul terakhir ditunjuk oleh pointer LAST. LINK simpul terakhir nilainya = NULL. Catatan : Diilustrasikan jumlah simpul = 8 buah. Tapi sebenarnya jumlah simpul belum tentu 8 buah. Tapi dipastikan lebih dari satu buah. LAST LI NK INFO FIRST 15 Soal. 24 12 30 10 7 5 17 Susun program atau penggalan program atau fungsi untuk mengubah letak simpul yang ada sehingga nilai INFO urut menaik seperti ilustrasi berikut ini. LAST LI NK INFO FIRST 5 7 10 12 15 17 24 30 12). Susun program yang lengkap sehingga dapat dijalankan di komputer untuk menginput sejumlah data numerik integer dan menyimpannya dalam Linear Singly Linked List, sedemikian rupa sehingga nilai INFOnya urut menaik. Proses input dan simpan ke Linked List selesai bila nilai yang diinput = 999. Contoh: Bila nilai dan urutan nilai yang diinput : 12, 24, 17, 5, 10, 30, 7, 15, 999 5 LAST LI NK INFO Maka FIRST seharusnya terbentuk Linked List sebagai berikut : 7 10 12 15 Catatan : Jumlah data diatas hanyalah contoh. Jumlahnya tidak mesti 8 buah 148 17 24 30 26