Linked list merupakan Merupakan suatu struktur data
pengembangan dari konsep ADT (Abstrak Data Type) yang bersifat dinamis. Linked
List dapat dimanfaatkan secara effektif sesuai dengan keperluan. Linked List
juga dapat benar – benar dihapus / dibersihkan dari memory.Linked List
sebenarnya merupakan suatu typedata tersendiri.
Linked list minimal mempunyai 2 element itu adalah data dan
pointer untuk menunjukkan ke list berikutnya.
![linkedlist1](https://dewa18.files.wordpress.com/2009/11/linkedlist1.png?w=300&h=104)
Doubly Linked list : Linked list dengan menggunakan pointer,
dimana setiap node memiliki 3 field, yaitu: 1 field pointer yang menunjuk ke
pointer berikutnya, 1 field pointer yang menunjuk ke pointer sebelumnya dan
field yang berisi data dari node tersebut. Pointer next dan prev-nya menunjuk
ke null.
doubly linked list :
struct tnode {
int value;
struct tnode *prev;
struct tnode *next;
};
struct tnode * head=0;
struct tnode * tail=0;
Menambah data pada barisan awal:
void pushHead(int age, char name[]){
//membuat
blok data baru
current
= (struct human *)malloc(sizeof human);
//mengisi
data
strcpy(current->name,
name);
current->age=age;
//membuat
penunjuk data lain menjadi NULL terlebih dahulu
current->next
= current->prev=NULL;
//jika
tidak ada data
if(head==NULL){
//maka
akan jadi data pertama, head dan tail akan sama dengan data baru
head=tail=current;
//jika
ada data
}else{
//pergantian
head menjadi data terbaru
head->prev=current;
current->next=head;
head=current;
}
}
Menambah data pada barisan akhir :
void pushTail(int age, char name[]){
//membuat
blok data baru
current
= (struct human *)malloc(sizeof human);
//mengisi
data
strcpy(current->name,
name);
current->age
= age;
//membuat
penunjuk data lain menjadi NULL terlebih dahulu
current->prev
= current->next = NULL;
//jika
tidak ada data
if(head==NULL){
//maka
akan jadi data pertama, head dan tail akan sama dengan data baru
head=tail=current;
//jika
ada data
}else{
//pergantian
tail menjadi data terbaru
current->prev
= tail;
tail->next
= current;
tail
= current;
}
}
Menghapus data awal :
void popHead(){
//jika
tidak ada data
if(head==NULL){
printf("No
Data\n");
//jika
hanya ada 1 data
}else
if(head==tail){
current=head;
head=tail=NULL;
free(current);
//jika
lebih dari 1 data
}else{
current=head;
head=head->next;
head->prev=NULL;
free(current);
}
}
Menghapus data akhir :
void popTail(){
//jika
tidak ada data
if(head==NULL){
printf("No
Data\n");
//jika
hanya ada 1 data
}else
if(head==tail){
current=tail;
head=tail=NULL;
free(current);
//jika
lebih dari 1 data
}else{
current=tail;
tail=tail->prev;
tail->next=NULL;
free(current);
}
}
Circular Single Linked List merupakan Single Linked List yang pointer next-nya menunjuk ke dirinya
sendiri, jika terdiri dari beberapa node maka pointer terakhirnya akan menunjuk
ke pointer terdepannya.
![single cir ll](https://dewa18.files.wordpress.com/2009/11/single-cir-ll.png?w=300&h=139)
Circular doubly Linked List merupakan Doubly Linked List yang pointer next dan prev-nya menunjuk ke dirinya sendiri secara circular.
![double cir ll](https://dewa18.files.wordpress.com/2009/11/double-cir-ll.png?w=300&h=147)
reference :
- https://dewa18.wordpress.com/2009/11/02/struktur-data-linked-list/
- https://www.mahirkoding.com/struktur-data-double-linked-list-dengan-bahasa-c/
- binusmaya
No comments:
Post a Comment