Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Endang Purnama Giri, M.Kom. Annisa, M.Kom. Departemen Ilmu Komputer FMIPA-IPB 2010.

Presentasi serupa


Presentasi berjudul: "Endang Purnama Giri, M.Kom. Annisa, M.Kom. Departemen Ilmu Komputer FMIPA-IPB 2010."— Transcript presentasi:

1 Endang Purnama Giri, M.Kom. Annisa, M.Kom. Departemen Ilmu Komputer FMIPA-IPB 2010

2  Suatu untaian atau rangkaian berantai dari node-node yang disusun dengan menggunakan pointer  Masing-masing node merupakan suatu record yang terdiri dari dua bagian, yaitu : 1. Bagian isi/informasi 2. Bagian pointer (untuk menunjuk ke node berikutnya) informasipointer

3  Linked List memiliki sebuah pointer untuk menunjuk node awalnya. Awal ABCD Node terakhir pada linked list memiliki nilai null pada bagian pointernya. Node-node didalam linked list dapat ditambah (dialokasikan) dan dapat dihapus (didealokasikan) Kapasitas penyimpanan struktur linked list tidak terbatas (dinamis) tergantung kapasitas memorinya

4  Pada C Deklarasi sebuah node dapat dilakukan dengan Struct node{ int data; struct node *selanjutnya; } typedef struct node node

5  Bentuk operasi pada linked list meliputi  Penambahan data  Penghapusan data  Pengaksesan data  Update data

6

7  1. Mendeklarasikan record/struct sebagai node  2. Mendeklarasikan pointer bantuan Struct node{ int data; struct node *next; }typedef struct node node; node awal, akhir, baru; awalakhirbaru

8  Operasi penambahan data baru pada linked list dapat memiliki 3 mode  Di awal list  Di antara data yang lain  Di akhir list

9  Node yang akan di masukan harus di alokasikan terlebih dahulu pada memory baru=malloc(sizeof node); baru

10  Node pertama pada sebuah linked list pada umumnya ditunjuk oleh suatu pointer bantuan (head/awal)  Ketika sebuah data (node) baru akan dimasukan pada linked list kondisi linked list bisa kosong ataupun sudah ada isinya Jika linked list masih kosong, bentuk linked list dan tunjuk node yang pertama sebagai awal linked list Jika linked list tidak kosong, masukkan node selanjutnya If awal == null { awal = baru;akhir=baru} akhir awalbaru else {baru->next=awal;awal=baru;} baruawal akhir

11

12 void insertAwal(int dataBaru, node *awal){ node *baru; baru=malloc(sizeof(node)); baru->data=dataBaru; if (awal==NULL){ awal=baru; akhir=baru; awal->next=NULL; } else { baru->next=awal; awal=baru; }

13  Ilustrasi Penambahan di Akhir  Selain di bagian awal pada bagian akhir list pada umumnya ditunjuk suatu pointer (tail/akhir )

14 void insertAkhir(int dataBaru, node *awal,node *akhir){ baru=malloc(sizeof(node)); baru->data=dataBaru; if (awal==NULL) { awal=baru; akhir=baru;} else { akhir->next=baru; akhir=baru; } akhir->next=NULL; }

15

16  Operasi penghapusan memiliki 3 mode  Di awal list  Di akhir list  Data tertentu pada list

17  Ilustrasi (sintax -- free(hapus); )

18

19 awal akhir bantu void cetak(node *awal,node *akhir){ node *bantu; bantu = awal; while(bantu!=NULL) { printf(“%d”,bantu->data;); bantu=bantu->next; }

20

21  Tidak semudah array yang dapat menggunakan index untuk menuju suatu data tertentu  Suatu node pada linked list dengan pointer tunggal hanya memiliki info lokasi data (node) selanjutnya  Penelusuran secara sekuensial (linier) dari awal sampai dengan posisi ataupun node (tujuan) dengan karakteristik data tertentu

22  Pada dasarnya update data akan diawali penelusuran data yang ingin diubah  Ketika posisi data telah ditemukan secara langsung data terkait pada node dapat langsung diubah dengan data yang baru

23  Ilustrasi Penambahan di Antara

24  Sintax dalam C void insertAntara(int dataBaru, int dataAntara,node *awal){ node baru,bantu; baru=malloc(sizeof(node)); baru->data=dataBaru; if (awal==NULL) { awal=baru; awal->selanjutnya=NULL; }

25  Sintax dalam C else { bantu=awal; while (bantu->data!=dataAntara && bantu->selanjutnya !=NULL){ bantu=bantu->selanjutnya; } baru->selanjutnya=bantu->selanjutnya; bantu->selanjutnya=baru; }

26  Ilustrasi (penghapusan node dengan data=4)

27  Ilustrasi (lanjutan)

28

29  Buatlah fungsi untuk : 1. melakukan pencarian berdasarkan key tertentu 2. melakukan perhitungan berapa banyak data tertentu pada list tersebut 3. melakukan penghapusan key tertentu dalam list 4. melakukan penghapusan node di akhir list 5. melakukan update terhadap nilai suatu node 6. melakukan penambahan data dengan memperhatikan urutan

30 int cari(int key,node *awal,node *akhir){ node *bantu; bantu = awal; while(bantu->data!=key && bantu!=NULL) { bantu=bantu->next; } if(bantu!=NULL) return 1; else return 0; }

31 int count(int key,node *awal,node *akhir){ node *bantu; int jumlah=0; bantu = awal; while(bantu!=NULL) { if(bantu->data==key) jumlah++; bantu=bantu->next; } return jumlah; }

32 void hapusKey(int key,node *awal,node *akhir){ node *bantu, *hold; bantu = awal; while(bantu->next->data!=key && bantu!=NULL) { bantu=bantu->next; } if(bantu!=NULL) { hold=bantu->next; bantu->next=hold->next; free(hold); } else printf(“Data tidak ketemu”); }

33 void hapusKey(node *awal,node *akhir){ node *bantu; bantu = awal; while(bantu->next!=akhir) { bantu=bantu->next; } akhir=bantu; free(bantu->next); akhir->next=NULL; }

34 void update(int baru, int lama,node *awal,node *akhir){ node *bantu; bantu = awal; while(bantu->data!=lama && bantu!=NULL) { bantu=bantu->next; } if(bantu!=NULL) bantu->data=baru; }

35 void insertUrut(int dataBaru, node *awal, node *akhir){ node *baru,*bantu, *hold; baru=malloc(sizeof(node)); baru->data=dataBaru; if (awal==NULL){ awal=baru; akhir=baru; awal->next=NULL; } else { if(akhir->datadata>dataBaru) //call insertAwal else{ bantu=awal; while(bantu->next->datanext; if(bantu!=NULL) { hold=bantu->next; bantu->next=baru; baru->next=hold; }}}}


Download ppt "Endang Purnama Giri, M.Kom. Annisa, M.Kom. Departemen Ilmu Komputer FMIPA-IPB 2010."

Presentasi serupa


Iklan oleh Google