CIRCULAR LINKED LIST

15:02 Pemrograman Web 0 Comments


Hallo guys, di kesempatan kali ini saya akan menjelaskan tentang circular linked list. Nah sebelum menjelaskan ke intinya saya akan menjelaskan dahulu apa itu linked list. Linked list itu adalah suatu struktur data yang merupakan suatu rangkaian atau daftar recond berjenis sama. Kemudian dihubungkan melalui bantuan pointer. Pengalokasian daftar dapat dilakukan secara dinamis. Sehingga isi daftar dapat dimanipulasi. Elemen data yang dihubungkan dengan link pada linked list disebut node. Nah biasanya di dalam linked list itu terdapat istilah head dan tail. Apa sih head  dan tail di linked list itu? Head merupakan suatu elemen yang ada pada posisi pertama dalam suatu linked list. Tail itu merupakan suatu elemen yang ada pada posisi terakhir dalam suatu linked list.
Di linked list ini mempunyai beberapa macam, 
-single linked list 
-double linked list 
-circular linked list 
kali saya akan menjelaskan hanya circular linked list saja.
Apa sih circular linked list itu? Penasaran?
Circular linked list merupakan suaru linked list dimana tail\ menunjuk ke head . Jadi tidak ada pointer yang menunjuk Null.
Di circular linked list ini juga mempunyai 2 jenis yaitu, circular single linked list dan circular double linked list.

Circular single
#include <stdio.h>
#include <stdlib.h>

//definisikan struct
struct SNode{
       int data;
       struct SNode *next;
};

struct SNode *n_awal, // node awal dari linked list
 *n_tampil, //node bantu untuk tampilkan data
 *n_bantu; //node bantu untuk insert node baru

int iterasi;

//inisialisasi linked list
void inisialisasi(){
   
     n_awal = NULL;
}

//tampilkan linked list
void tampil_list(){
   
    n_tampil = n_awal;
   
    while(n_tampil != NULL){
            printf("%d ", n_tampil -> data);
            n_tampil = n_tampil -> next;
    }
    printf("\n");
}

//method untuk membuat linked list menjadi circular
void buat_circular(){
   
     n_bantu = n_awal;
         
     // cari node terakhir
     while (n_bantu -> next != NULL){
           n_bantu = n_bantu -> next;  
     }
     
     //membuat linked list menjadi circular
     if(n_bantu -> next == NULL)
     {
         n_bantu -> next = n_awal;
     }
}

//method untuk insert node baru
void insert_node(int data){
   
     //node baru yang akan di insert
     struct SNode *n_insert;
     n_insert = (struct SNode *)malloc(sizeof(struct SNode));;
     n_insert -> data = iterasi;
     n_insert -> next = NULL;
   
     //kondisi linked list masih kosong
     if (n_awal == NULL){
     
        n_awal = n_insert;
     
     } else {
         
          n_bantu = n_awal;
         
          // cari node terakhir
          while (n_bantu -> next != NULL){
                n_bantu = n_bantu -> next;  
          }
         
          //hubungkan node terakhir dengan node baru
          if(n_bantu -> next == NULL)
          {
              n_bantu -> next = n_insert;
          }
     }
}

int main(int argc, char *argv[])
{
    inisialisasi();
   
    for(iterasi = 1; iterasi <= 5; iterasi++)
    {
        insert_node(iterasi);
    }
   
    tampil_list();
   
    buat_circular();
 
    system("PAUSE");
    return 0;
}
Dibawah ini merupakan gambar dari circular single linked list


Adapun contoh kodingan circular double linked list tapi yang saya pahami hanya satu yaitu circular single linked list, mohon dimaklumi saya juga sedang belajar. Sekian yang bisa saya sampaikan untuk kalian, bila ada yang kurang paham bisa ditanyakan di kolom comentar dibawah ini. Mohon maaf bila ada kesalahan di dalam penulisan. Terimakasih^^
HANNA TASYA
1154091
D4TI1B
ALGORITMA DAN STRUCTUR DATA

0 komentar: