Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

I. LINEAR SINGLY LINKED LIST II. LINEAR DOUBLY LINKED LIST III. CIRCULAR SINGLY LINKED LIST IV. CIRCULAR DOUBLY LINKED LIST.

Presentasi serupa


Presentasi berjudul: "I. LINEAR SINGLY LINKED LIST II. LINEAR DOUBLY LINKED LIST III. CIRCULAR SINGLY LINKED LIST IV. CIRCULAR DOUBLY LINKED LIST."— Transcript presentasi:

1

2

3

4 I. LINEAR SINGLY LINKED LIST II. LINEAR DOUBLY LINKED LIST III. CIRCULAR SINGLY LINKED LIST IV. CIRCULAR DOUBLY LINKED LIST

5 I. LINEAR SINGLY LINKED LIST 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK II. LINEAR DOUBLY LINKED LIST 25 INFO RIGHT LEFT FIRST 12 INFO RIGHT LEFT 17 INFO LEFT 10 RIGHT INFO LEFT RIGHT LAST

6 III. CIRCULAR SINGLY LINKED LIST 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK IV. CIRCULAR DOUBLY LINKED LIST 25 INFO RIGHT LEFT FIRST 12 INFO RIGHT LEFT 17 INFOLEFT 10 RIGHT INFOLEFT RIGHT LAST

7 LINKED LIST LURUS DENGAN POINTER TUNGGAL

8 1.1. ILUSTRASI LINEAR SINGLY LINKED LIST 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4) 10 FIRST INFO LINK 17 INFO LINK 12 INFO LINK 25 LAST INFO LINK (4)(3) (2) (1) atau

9 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4) 10 FIRST INFO LINK 17 INFO LINK 12 INFO LINK 25 LAST INFO LINK (4)(3) (2) (1) atau (1)(2) (3) (4) (1)(2) (3) (4) Urutan insert Urutan delete Urutan insert Urutan delete

10 INSERT : Masuk, Simpan, Tulis DELETE : Keluar, Ambil, Baca atau Hapus

11 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4) 10 FIRST INFO LINK 17 INFO LINK 12 INFO LINK 25 LAST INFO LINK (4)(3) (2) (1) (2) (3) (4) (1)(2) (3) (4) Urutan insert Urutan delete Urutan insert Urutan delete Ilustrasi-1 Ilustrasi-2 Pertanyaan :Mana yang mengikuti prinsip STACK, dan mana yang mengikuti prinsip QUEUE, Linked List ilustrasi-1 atau Linked List ilustrasi-2

12

13 Untuk selanjutnya Linked List yang akan diterangkan adalah Linked List yang diilustrasikan sebagai berikut : 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4)

14 Keterangan : Dari ilustrasi diatas, dapat diterangkan sebagai berikut: Ada 4 simpul, simpul no (1) sampai dengan no (4) Setiap simpul (record) terdiri dari dua elemen (field) yaitu : Field INFO misal bertipe integer. Field LINK bertipe pointer Untuk simpul no (1), Field INFO berisi nilai 25 Field LINK berisi alamat simpul no (2) Yang diilustrasikan dengan panah 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4)

15 Untuk Linked List yang akan dipelajari : Simpul pertama no (1) berada diujung paling kiri, dan ditunjuk oleh pointer FIRST. Simpul terakhir no (4) berada diujung paling kanan,dan ditunjuk oleh pointer LAST. LINK dari simpul terakhir diisi dengan NULL. 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4)

16 1.2 PROSES 2a. 2b. 2c. 2d. 2e. 2f. 2g. Pembuatan Record Awal (inisialisasi) Insert Kanan (Insert Akhir) Insert Kiri (Insert Awal) Insert Tengah Delete Kanan Delete Kiri Delete Tengah

17 Ilustrasi sebuah Simpul (Vertex, atau Node, atau Record) INFO LINK Nama field Tipe Isi : LINK : pointer : akan diisi dengan alamat record berikutnya Nama field Tipe Isi : INFO : integer : akan diisi data Tipe data tentunya disesuaikan dengan keperluan. Disini diambil saja contoh yang sederhana dimana data yang akan disimpan adalah bernilai integer. Simpul dengan 2 elemen atau field

18 Struktur sebuah Simpul INFO LINK Untuk ‘memberitahukan komputer ‘ bahwa kita memerlukan suatu Simpul atau record dengan tipe strukur demikian ini, perlu ditulis intruksi-instruksi sebagai berikut : typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST;

19 typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST; Disiapkan 3 buah variabel pointer, yaitu : P, FIRST dan LAST yang kesemuanya berkaitan dengan simpul atau record atau node yang bertipe Simpul Masih banyak cara penulisan lain untuk maksud yang sama. Disini diambil suatu cara yang dianggap paling sederhana.

20 typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST; Disini : Simpul Adalah nama tipe sebagaimana nama tipe yang telah disediakan oleh Bahasa C seperti : int, long int, float, dan sebagainya. Bila int adalah nama tipe suatu variable, maka Simpul disini adalah nama tipe dari suatu structure atau record, dimana structure tersebut terdiri dari dua field, yaitu : INFO yang bertipe integer (int), dan LINK yang bertipe pointer (pakai *) untuk structure tersebut.

21 typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST; Pembuatan Sebuah Simpul ( Baru ) Perhatikan kembali instruksi untuk menyiapkan tipe (struktur) sebuah simpul sebagai berikut :

22 Pembuatan Simpul ( Baru ) Instruksi untuk membuat sebuah record baru : P = (Simpul *) malloc(sizeof(Simpul)); Terbentuk sebuah simpul yang alamatnya disimpan dalam pointer P atau disebut : “simpul yang ditunjuk oleh pointer P” yang dapat diilustrasikan sebagai berikut : P INFO LINK INFO P LINK Atau cukup digambar sabagai berikut :

23 P = (Simpul *) malloc(sizeof(Simpul)); malloc : Maksudnya : memory allocation yaitu mengalokasikan memory sebesar atau seukuran (sizeof) yang diperlukan untuk Simpul

24 P = (Simpul *) malloc(sizeof(Simpul)); 21C8 P INFOLINK H21C8 Alamat simpul dicatat dalam variabel P (P bertipe Pointer untuk menunjuk Simpul)

25 21C8 P INFOLINK H21C8 INFO P LINK Ilustrasi fisik dalam memory diatas, dapat digambarkan dengan ilustrasi diagram sebagai berikut :

26 Contoh (sederhana) program selengkapnya untuk membuat sebuah record atau simpul yang alamat simpul tersebut dicatat dalam pointer P. #include typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST; void main() { int X; scanf(“%i”, &X); p = (Simpul *)alloc(sizeof(Simpul)); P->INFO = X; P->LINK = NULL; }

27 void main() { int X; scanf(“%i”, &X); p = (Simpul *)alloc(sizeof(Simpul)); P->INFO = X; P->LINK = NULL; } Terbentuk sebuah simpul yang alamatnya disimpan dalam pointer P atau disebut simpul yang ditunjuk oleh pointer P Nilai X (misal 25 hasil input sebelumnya) disimpan dalam elemen INFO Field LINK berisi NULL artinya pointer LINK tidak menunjuk kesuatu alamat tertentu 25 INFO P LINK

28 P->INFO = X; 25 INFO P LINK P->INFO maksudnya : Field INFO suatu simpul, yang simpulnya sedang ditunjuk oleh pointer P dalam bahasa C, ditulis dengan dua karakter yaitu tanda - (minus) dan tanda > (tanda lebih besar) p = (Simpul *)alloc(sizeof(Simpul)); P->INFO = X; P->LINK = NULL;

29 25 \0 INFO P LINK P->LINK field LINK suatu simpul, yang simpulnya sedang ditunjuk oleh pointer P karakter NULL nilai ASCIInya = 0 (nol) p = (Simpul *)alloc(sizeof(Simpul)); P->INFO = X; P->LINK = NULL;

30 25 \0 INFO P LINK Nilai pointer yang berisi NULL sering diilustrasikan sebagai panah ‘ground’ sebagai berikut : 25 INFO P LINK

31 Perhatikan kembali LINEAR SINGLY LINKED LIST yang akan dibuat sebagai yang diilustrasikan berikut ini : 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4)

32 Pembuatan Simpul Awal. Simpul awal, maksudnya adalah simpul yang pertama kali dibuat. Setelah itu simpul baru dapat ditambahkan baik disebelah kanan, maupun disebelah kiri simpul simpul yang sudah ada. Misal, (untuk mudahnya) : Simpul ini yang kita ambil sebagai contoh untuk simpul awal yang ditunjuk oleh pointer FIRST 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4)

33 Perhatikan kembali struktur sebuah simpul, dan variabel-variabel yang diperlukan typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST; int X; Dalam memory Menyatakan struktur Simpul dan menyiapkan variabel Perhatikan : Ada 3 buah pointer : P, FIRST, dan LAST P FIRSTLAST X

34 void Awal (void) { int X; scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LINK = NULL; } Fungsi untuk membuat simpul awal 1) 2) 3) 4) 5) Pembuatan Simpul Awal. Ada 5 intruksi pokok

35

36 typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST; void main() { int X; Menyiapkan 3 Pointer : P FIRST dan LAST dan debuah variabel X P FIRSTLAST X

37 P FIRSTLAST X

38 scanf(“%i”, &X); 25 P FIRSTLAST X

39 scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); INFO LINK H1000 P FIRSTLAST X

40 scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P variabel yang dinyatakan dengan kotak INFO LINK H1000 INFO LINK P Simpul ditunjuk oleh Pointer P Penggambaran ilustrasi dalam memory : Penggambaran ilustrasi diatas kertas INFO LINK P Disederhana kan menjadi P FIRSTLAST X

41 scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); Kotak untuk variabel Pointer P dibuang INFO LINK H1000 INFO LINK P P FIRSTLAST X

42 INFO P LINK Sebuah simpul yang ditunjuk oleh pointer P ( alamatnya dicatat dalam pointer P ) INFO P LINK INFO P LINK INFO P LINK P INFO P LINK INFO P LINK INFO Banyak cara menggambarkan ilustrasi pointer P menunjuk sebuah simpul

43 INFO LINK P P->LINK P->INFO scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); INFO LINK H1000 P FIRSTLAST X

44 scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; INFO LINK H INFO LINK P P->LINK P->INFO P FIRSTLAST X

45 INFO LINK H INFO LINK P P->LINK P->INFO printf(“%i”,P->INFO); T ercetak : 25 P FIRSTLAST X

46 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4) Simpul pertama selalu ditunjuk Oleh pointer FIRST

47 scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; INFO LINK H INFO LINK P P->LINK P->INFO P FIRSTLAST X

48 INFO LINK 25 INFO LINK P H1000 P->LINK scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; P->INFO P FIRSTLAST X

49 INFO LINK 25 INFO LINK P H1000 P->LINK atau FIRST->LINK scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; FIRST P->INFO atau FIRST->INFO P FIRSTLAST X

50 INFO LINK 25 INFO LINK P H1000 P->LINK atau FIRST->LINK FIRST P->INFO atau FIRST->INFO printf(“%i”, P->INFO); Tercetak : 25 printf(“%i”, FIRST->INFO); Tercetak : 25 P FIRSTLAST X

51 INFO LINK 25 INFO LINK P H1000 P->LINK atau FIRST->LINK scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; FIRST P->INFO atau FIRST->INFO P FIRSTLAST X

52 Simpul terakhir selalu ditunjuk oleh pointer LAST 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4)

53 INFO LINK 25 INFO LINK P H1000 P->LINK atau FIRST->LINK scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; FIRST P->INFO atau FIRST->INFO P FIRSTLAST X

54 INFO LINK 25 INFO LINK P H1000 P->LINK atau FIRST->LINK scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; FIRST P->INFO atau FIRST->INFO P FIRSTLAST X

55 INFO LINK 25 INFO LINK P H1000 P->LINK atau FIRST->LINK atau LAST->LINK scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; FIRST P->INFO atau FIRST->INFO atau LAST->INFO LAST P FIRSTLAST X

56 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4) LINK Simpul terakhir selalu berisi NULL

57 \0 INFO LINK 25 INFO LINK P H1000 scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LINK = NULL; FIRST LAST P FIRSTLAST X

58 25 INFO FIRST LINK Field ini namanya : Field ini namanya : P->LINK atau FIRST->LINK atau LAST->LINK P->INFO atau FIRST->INFO atau LAST->INFO P LAST

59

60

61 INFO LINK H1000 INFO LINK P P FIRSTLAST X

62 INFO LINK H1000 INFO LINK P P FIRSTLAST X

63 INFO LINK H1000 INFO LINK P P FIRSTLAST X

64 INFO LINK H1000 INFO LINK P P FIRSTLAST X

65 INFO LINK H1000 INFO LINK P P FIRSTLAST X

66 INFO LINK H1000 INFO LINK P P FIRSTLAST X

67

68 INFO LINK H1000 INFO LINK P P FIRSTLAST X

69 INFO LINK H1000 INFO LINK P FIRST P LAST X

70 INFO LINK H1000 INFO LINK P P FIRSTLAST X

71 INFO LINK H1000 INFO LINK P FIRST P LAST X

72 INFO LINK H1000 INFO LINK P P FIRSTLAST X

73 INFO LINK H1000 INFO LINK P FIRST P LAST X

74 INFO LINK H1000 INFO LINK P FIRST P LAST X

75

76 INFO LINK H1000 INFO LINK P FIRST P LAST X

77 INFO LINK H1000 INFO LINK P FIRST P LAST X

78 INFO LINK H1000 INFO LINK P FIRST P LAST X

79 INFO LINK H1000 INFO LINK P FIRST P LAST X

80 INFO LINK H1000 INFO LINK P FIRST P LAST X

81 INFO LINK H1000 INFO LINK P FIRST LAST P FIRSTLAST X

82

83 INFO LINK H1000 INFO LINK P FIRST P LAST X

84 INFO LINK H1000 INFO LINK P FIRST P LAST X NULL

85 \0 INFO LINK H1000 INFO LINK P FIRST LAST P FIRSTLAST X

86 \0 INFO LINK H1000 INFO LINK P FIRST LAST P FIRSTLAST X atau :

87 25 INFO FIRST LINK Field ini namanya : Field ini namanya : P->LINK atau FIRST->LINK atau LAST->LINK P->INFO atau FIRST->INFO atau LAST->INFO P LAST Tentang nama pointer untuk field LINK ada 3

88

89 25 INFO P LINK FIRST LAST Pertanyaan : Ada berapa buah simpul yang terlihat

90 Jawab : Ada 1 buah simpul 25 INFO P LINK FIRST LAST

91 Pertanyaan : Ada berapa buah pointer yang terlihat - Apa nama masing-masing pointer - Apa isi masing-masing pointer 25 INFO P LINK FIRST LAST

92 No Nama Isi Pointer Pointer pointer 25 INFO P LINK FIRST LAST Jawab : Ada 4 buah pointer

93 No Nama Isi Pointer Pointer pointer P &(1) Maksudnya alamat simpul (1) 25 INFO P LINK FIRST LAST Jawab : Ada 4 buah pointer

94 No Nama Isi Pointer Pointer pointer P &(1) FIRST&(1) 25 INFO P LINK FIRST LAST Jawab : Ada 4 buah pointer

95 No Nama Isi Pointer Pointer pointer P &(1) FIRST&(1) LAST &(1) 25 INFO P LINK FIRST LAST Jawab : Ada 4 buah pointer

96 No Nama Isi Pointer Pointer pointer P &(1) FIRST&(1) LAST &(1) P -> LINK, atau FIRST -> LINK, atau LAST -> LINK NULL 25 INFO P LINK FIRST LAST Jawab : Ada 4 buah pointer

97 if( P == FIRST ) if( FIRST == LAST ) if( FIRST->LINK == LAST->LINK ) if( FIRST->INFO == 25 ) 25 INFO P LINK FIRST LAST Jawab : Ada 4 buah pointer TRUE atau FALSE Condition berikut ini :

98


Download ppt "I. LINEAR SINGLY LINKED LIST II. LINEAR DOUBLY LINKED LIST III. CIRCULAR SINGLY LINKED LIST IV. CIRCULAR DOUBLY LINKED LIST."

Presentasi serupa


Iklan oleh Google