GSLC
Data Structure GSLC
Linked list
adalah stuktur data linier dimana adalah koleksi data element juga dikenal sebagai nodes dan dapat memiliki variasi ukuran/sizes. biasanya, item/barang yang terdaftar terkoneksi melalui pointer dimana diketahui sebagai link dan dikurung ini disebut sebagai linked list. Biasanya terdapat istilah head dan tail.
Head = elemen yang berada pada posisi pertama dalam suatu linked list
Tail = elemen yang berada pada posisi terakhir dalam suatu linked list
Macam- macam linked list :
1. Single Linked List
2. Double Linked List
3. Circular Linked List
4. Multiple Linked List
Single Linked List
Single Linked List merupakan suatu linked list yang hanya memiliki satu variabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke null.
contoh kodingannya :
Struct Students{
char nama[100];
char nim[100];
char id[100];
float ipk;
struct students *next;
}*head,*tail;
Double Linked List
Double Linked List merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke null.
contoh kodingannya :
Struct Students{
char nama[100];
char nim[100];
char id[100];
float ipk;
struct students *next,*prev;
}*head,*tail;
Dapat disimpulkan, perbedaan dari Single Linked List dan Double Linked List yaitu, Single Linked list yakni linked ist dengan sebuat pointer terhubung. Sedangkan Double Linked List yakni linked list dengan 2 pointer penunjuk, yaitu ke arah node sebelum(prev) dan node sesudah (next).
Linked list
adalah stuktur data linier dimana adalah koleksi data element juga dikenal sebagai nodes dan dapat memiliki variasi ukuran/sizes. biasanya, item/barang yang terdaftar terkoneksi melalui pointer dimana diketahui sebagai link dan dikurung ini disebut sebagai linked list. Biasanya terdapat istilah head dan tail.
Head = elemen yang berada pada posisi pertama dalam suatu linked list
Tail = elemen yang berada pada posisi terakhir dalam suatu linked list
Macam- macam linked list :
1. Single Linked List
2. Double Linked List
3. Circular Linked List
4. Multiple Linked List
Single Linked List
Single Linked List merupakan suatu linked list yang hanya memiliki satu variabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke null.
contoh kodingannya :
Struct Students{
char nama[100];
char nim[100];
char id[100];
float ipk;
struct students *next;
}*head,*tail;
Double Linked List
Double Linked List merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke null.
contoh kodingannya :
Struct Students{
char nama[100];
char nim[100];
char id[100];
float ipk;
struct students *next,*prev;
}*head,*tail;
Dapat disimpulkan, perbedaan dari Single Linked List dan Double Linked List yaitu, Single Linked list yakni linked ist dengan sebuat pointer terhubung. Sedangkan Double Linked List yakni linked list dengan 2 pointer penunjuk, yaitu ke arah node sebelum(prev) dan node sesudah (next).
Circular Linked List
Circular Linked List merupakan suatu linked list dimana tail (node terakhir) menunjuk ke head (node pertama). Jadi tidak ada pointer yang menunjuk NULL. Ada 2 jenis Circular Linked List, yaitu :
- Circular Linked List
-Circular Double Linked List
Insert dan delete dalam double linked list
Push merupakan operasi insert, terdapat 2 macam yaitu pushDepan dan pushBelakang.
Contoh pushDepan :
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;
}
}
Contoh pushBelakang :
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;
}
}
Pop merupakan operasi delete, terdapat 2 macam yaitu PopDepan dan PopBelakang
Contoh PopDepan :
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);
}
}
Contoh PopBelakang :
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);
}
}
Comments
Post a Comment