Tuesday, December 18, 2012

TMD02 - [8] Linked List


Linked list adalah struktur data berupa deret data yang dinamis, karena dapat ditambahkan
ataupun dihapus. Lebih rinci lagi:
  • linked list terdiri dari rantai node/ simpul dimana tiap node terdiri dari data, pointer yang merujuk data node-nya sendiri dan pointer merujuk pada node yang mengikutinya.
  • Linked list memilki head/ kepala (node awal) dan tail/ekor (node akhir). Karena tail adalah node akhir, dengan demikian, dalam node tail, pointer yang merujuk pada node selanjutnya adalah samadengan NULL.
  • Jika linked list hanya terdiri dari satu node, maka, dalam node tersebut, pointer yang merujuk pada node selanjutnya adalah samadengan NULL.

Tahapan pada linked list adalah sebagai berikut.
  • Deklarasi linked list, yang terdiri dari definisi node dan definisi list
  • Mengalokasikan memori terhadap setiap node
  • Mengisi data pada setiap simpul atau node
  • Menyambungkan setiap link dari simpul
  • Menampilkan hasilnya
Untuk selengkapnya dapat melihat video ini.


Potongan source codenya seperti di bawah ini. :)
 #include <stdio.h>  
 #include <stdlib.h>  
 #include <string.h>  
   
 typedef struct simpul   
 {  
      char nama[20];  
      float nilai;  
      struct simpul *next_simpul;  
 }simpulku;  
   
 void main()  
 {  
      simpulku *simpul1, *simpul2, *simpul3, *simpul4, *temp;  
   
      //alokasikan memori terlebih dahulu  
      simpul1 = (simpulku *)malloc(sizeof(simpulku));  
      simpul2 = (simpulku *)malloc(sizeof(simpulku));  
      simpul3 = (simpulku *)malloc(sizeof(simpulku));  
   
      //isi data dari masing2 simpul  
      strcpy(simpul1->nama, "Amin");  
      strcpy(simpul2->nama, "Budi");  
      strcpy(simpul3->nama, "Citra");  
      simpul1->nilai=90;  
      simpul2->nilai=20;  
      simpul3->nilai=100;  
      simpul1->next_simpul = NULL;  
   
      //sambungkan link masing2 simpul  
      simpul1->next_simpul = simpul2;  
      simpul2->next_simpul = simpul3;  
      simpul3->next_simpul = NULL;  
   
      //tampilkan hasilnya, mulai dari simpul 1  
      temp = simpul1; //cara satu per satu  
      printf("%s, %f\n", temp->nama, temp->nilai);  
      temp = temp->next_simpul; //simpul 2  
      printf("%s, %f\n", temp->nama, temp->nilai);  
      temp = temp->next_simpul; //simpul 3  
      printf("%s, %f\n", temp->nama, temp->nilai);  
      printf("\n");  
   
      //skenario menambahkan simpul baru  
      simpul4 = (simpulku *)malloc(sizeof(simpulku)); //siapkan  
      strcpy(simpul4->nama, "Dewi"); //isi nama  
      simpul4->nilai=80; //isi nilai  
      simpul2->next_simpul = simpul4; //update link  
      simpul4->next_simpul = simpul3;  
      printf("\n");  
   
      temp = simpul1;  
      for(;temp!=NULL; temp=temp->next_simpul) //cara looping  
           printf("%s, %f\n", temp->nama, temp->nilai);  
   
      //menghapus simpul2 -> Budi  
      simpul1->next_simpul = simpul4; //update link  
      free(simpul2); //hapus simpul  
      printf("\n");  
   
      temp = simpul1;  
      for(;temp!=NULL; temp=temp->next_simpul) //cara looping  
           printf("%s, %f\n", temp->nama, temp->nilai);   
   
      system ("pause");  
      return 0;  
 }  

Semoga bermanfaat. :)

No comments:

Post a Comment