CIRCULAR LINKED LIST
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
HANNA TASYA
1154091
D4TI1B
ALGORITMA DAN STRUCTUR DATA
0 komentar: