Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Linked List Entin Martiana.

Presentasi serupa


Presentasi berjudul: "Linked List Entin Martiana."— Transcript presentasi:

1 Linked List Entin Martiana

2 Malloc Memory Allocation (malloc) adalah sebuah fungsi fasilitas untuk memesan tempat secara berurutan untuk tipe data dinamis(pointer) Nilai balik dari memory allocation adalah void *

3 Problem Bagaimana jika kita pesan 50000 alamat berurutan?
Akan selalu gagal. Untuk itu kita lakukan memory allocation untuk setiap satu data. Bagaimana agar data pertama tetap berhubungan dengan data kedua? Kita gunakan pointer untuk menghubungkan

4 The Linked List data structure
[0] [1] [2] array A B C Array node linked A B C Linked list Linked lists are unbounded (maximum number of items limited only by memory)

5 Array vs Linked List Linked lists are unbounded
Array : int A[3] Linked List : struct list *A; A[2] A[1] A[0] A(data 3) A(data 2) A(data 1) Linked lists are unbounded (maximum number of items limited only by memory)

6 Deklarasi struct simpul { char nama[25]; int nrp; struct simpul *next;
}; struct simpul *ujung; simpul nama nrp data pointer yg menunjuk simpul lain next

7 Membangun Linked List Apa yang harus dilakukan? Deklarasi
Memory allocation Mengisi data Menyiapkan untuk dihubungkan dengan data baru berikutnya

8 Bagaimana? nama1 nrp1 next struct simpul *ujung;
ujung=(struct simpul*)malloc(sizeof(struct simpul)); printf("Nama :");scanf("%s",&ujung->nama); printf("NRP :");scanf("%d",&ujung->nrp); if(j==0) { ujung->next=NULL; tampung=ujung; } ujung tampung nama1 nrp1 next NULL

9 Selanjutnya nama2 nrp2 next nama2 nrp2 nama1 nrp1 next next
ujung ujung=(struct simpul*)malloc(sizeof(struct simpul)); printf("Nama :");scanf("%s",&ujung->nama); printf("NRP :");scanf("%d",&ujung->nrp); if(j<>0) { ujung->next=tampung; tampung=ujung; } nama2 nrp2 next tampung tampung ujung nama2 nrp2 nama1 nrp1 next next NULL

10 Selanjutnya nama3 nrp3 next nama3 nrp3 nama2 nrp2 nama1 nrp1 next next
ujung ujung=(struct dtnilai*)malloc(sizeof(struct dtnilai)); printf("Nama :");scanf("%s",&ujung->nama); printf("NRP :");scanf("%d",&ujung->nrp); if(j<>0) { ujung->next=tampung; tampung=ujung; } nama3 nrp3 next ujung tampung tampung nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next NULL

11 Sampai iterasi keempat
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL tampung

12 Membaca (Menampilkan)
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL tampil tampil tampil tampil tampil tampil = ujung; while (tampil<>NULL) // fungsi menampilkan tampil = tampil -> next;

13 Mencari simpul ttt. nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL cari cari cari cari = ujung; while (cari->nama!=nama2) { cari = cari->next; }

14 Menyisipkan sebagai simpul terakhir
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL cari cari cari cari cari = ujung while (cari->next !=NULL) cari = cari->next; cari->next=baru; baru namax nrpx next NULL

15 Menghapus simpul ttt. nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL hapus hapus = ujung;

16 Menghapus simpul ttt. nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL hapus while (hapus->nama != nama2) { sbl = hapus; hapus=hapus->next; }

17 Menghapus simpul ttt. nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL sbl hapus while (hapus->nama != nama2) { sbl=hapus; hapus=hapus->next; }

18 Menghapus simpul ttt. nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL sbl hapus while (hapus->nama != nama2) { sbl=hapus; hapus=hapus->next; }

19 Menghapus simpul ttt. nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL sbl hapus sbl->next=hapus->next;

20 Menghapus simpul ttt. nama4 nrp4 nama3 nrp3 nama1 nrp1 next next next
ujung nama4 nrp4 nama3 nrp3 nama1 nrp1 next next next NULL sbl free(hapus);

21 Menyisipkan setelah simpul ttt.
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL cari baru cari = ujung namax nrpx next

22 Menyisipkan setelah simpul ttt.
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL cari baru while (cari->nama!=nama3) cari = cari->next; baru->next = cari->next; namax nrpx next

23 Menyisipkan setelah simpul ttt.
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL cari baru cari->next = baru; namax nrpx next

24 Menyisipkan sebelum simpul ttt.
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL cari baru cari = ujung namax nrpx next

25 Menyisipkan sebelum simpul ttt.
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL stl cari baru cari = ujung; while (cari->nama!=nama1) stl=cari; cari=cari->next; namax nrpx next

26 Menyisipkan sebelum simpul ttt.
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL stl cari baru cari = ujung; while (cari->nama!=nama1) stl=cari; cari=cari->next; namax nrpx next

27 Menyisipkan sebelum simpul ttt.
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL stl cari baru cari = ujung; while (cari->nama!=nama1) stl=cari; cari=cari->next; namax nrpx next

28 Menyisipkan sebelum simpul ttt.
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL stl cari baru baru->next = cari; namax nrpx next

29 Menyisipkan sebelum simpul ttt.
ujung nama4 nrp4 nama3 nrp3 nama2 nrp2 nama1 nrp1 next next next next NULL stl cari baru stl->next = baru; namax nrpx next


Download ppt "Linked List Entin Martiana."

Presentasi serupa


Iklan oleh Google