Linked List
Bahasa Melayu untuk Linked List = Senarai Berantai
Linked List dibedakan menjadi Single Linked List(Memiliki 1 node), Double Linked List(Memiliki 2 node, seperti next atau previous), Multiple Linked List(Memiliki node lebih dari 2).
Single Linked List
Dibagi menjadi 3 Cara : Push Depan, Push Belakang, Push Tengah.
Dalam penggunaan Single Linked List, ada baiknya kita mengerti konsep penggunaan struct (dalam bahasa C) terlebih dahulu.
Selain itu, juga ada cara untuk menDelete data yang telah dimasukkan atau yang sudah ada dalam linked list, penghapusan tsb disebut sebagai POP.
Pop sendiri dibagi menjadi 2 macam : POP depan, dan POP belakang.
*Notice: Pada bagian belakang node (Tail Node) selalu memiliki nilai NULL.
Push Depan : Yang dimaksud dengan push depan adalah jika user memasukkan data baru maka, data tersebut akan ditetapkan kedalam alamat current / *curr. Setelah itu alamat yg memiliki data tsb akan di push ke arah head. Sehingga head = curr. Yang awalnya berurutan melalui Head, Tail, Current. Saat di push ke depan menjadi Head Current Tail. (inti dari push depan : data head berada di depan, data yang ada di tail berada di belakang).
Berikut adalah contoh Implementasi dari Push Depan dalam bahasa C:
struct Mahasiswa{
char nama[25];
struct Mahasiswa *next;
};
struct Mahasiswa *curr;
*curr = (struct Mahasiswa *) malloc (sizeof(struct Mahasiswa);
strcpy (curr -> nama, nama);
curr -> next = head;
head=curr;
Push Belakang: Memiliki konsep yang sama dengan push depan, namun dalam rangka Push Belakang, pada bagian Tail yang akan di push sehingga pada akhirnya yang berawal dengan posisi Head Current Tail. Saat disisipkan data baru menjadi Current (dalam Node tersendiri), Head (dengan Node Tersendiri), Tail(dengan Node tersendiri). Saat diimplementasikan Push belakang, posisinya akan menjadi -> Head & Current (dalam 1 node!), node, dengan Tail (node sendiri dengan terakhirnya diisikan NULL).
Berikut adalah contoh Implementasi dari Push Belakang dalam bahasa C:
if (head == NULL){
head = tail = curr;
}else{
tail -> next = curr;
tail = curr;
}
tail -> next = NULL;
}
POP Depan : Dalam menghapus depan, kita harus memastikan bahwa data yang sudah dimasukkan yang tadinya berada di current, sekarang berada pada head (depan).
void popdepan(){
if (head == tail){
head = tail = NULL;
free (curr); //penghapusan dalam link list dsb sebagai FREE.
}else{
head = head ->next;
free (curr);
}
}
POP Belakang: Dalam
menghapus Belakang, kita harus memastikan bahwa data yang sudah dimasukkan
yang tadinya berada di current, sekarang berada pada head (depan).
void popbelakang(){
struct Mahasiswa *curr = head;
if (head == tail){
head = tail = NULL;
free (curr);
}else{
while(curr -> next != tail){
curr = curr -> next;
} tail = curr;
free (curr -> next);
tail -> next = NULL;
}
}
No comments:
Post a Comment