Insertion and Deletion Linked List

Halo teman-teman, pada kesempatan kali ini saya ingin berbagi tentang Insertion dan Deletion pada Linked List yang telah saya pelajari hari ini. (Konsep Stack)

Insertion berarti memasukan data dan biasa disebut dalam fungsi "push()". Sedangkan Deletion berarti menghapus data dan biasa disebut dalam fungsi "pop()".

Single Linked List

Dalam Single Linked List yang harus kita ingat konsepnya adalah "Head - Tail" dengan Tail yang menuju ke NULL . Lalu terdapat variabel "Current" yaitu data yang ingin kita sisipkan / tambah. 

Dalam Linked List ini terdapat berbagai macam cara Insertion dan Deletion.

1. Push Head : berarti menambahkan data dari depan.
    Misalkan kita mempunyai sebuah struct :
struct data{
int angka;
struct data*next;
}*head,*tail,*curr;
    Berikut adalah contoh code Push Head dalam single linked list:
void pushHead(int angka){
curr = (struct data*) malloc (sizeof (struct data));
curr->angka = angka;
if(head == NULL){
head = tail = curr;
tail->next = NULL;
}else{
curr->next = head;
head = curr;
}
}
2. Push Tail : berarti menambahkan data dari belakang.
    Berikut adalah contoh code Push Tail dalam single linked list:
void pushTail(int angka){
curr = (struct data*) malloc (sizeof (struct data));
curr->angka = angka;
if(head == NULL){
head = tail = curr;
tail->next = NULL;
}else{
tail->next = curr;
tail = curr;
tail->next = NULL;
}
}
3. Pop Head : berarti menghilangkan data yang berada di depan.
    Berikut adalah contoh code Pop Head dalam single linked list:
void popHead(){
if(head!=NULL){
curr = head;
head = head->next;
free(curr);
}
}
4. Pop : berarti menghilangkan data yang kita inginkan.
    Berikut adalah contoh code Pop dalam single linked list:
void pop(int angka){
curr = head;
if(curr->angka == angka) popHead();
else{
while(curr->next->angka != angka){
curr = curr->next;
}
struct data*temp;
temp = curr->next;
curr->next = temp->next;
free(temp);
}
}

Double Linked List

Dalam Double Linked List yang harus kita ingat konsepnya adalah "Head - Tail" dengan Head yang sebelumnya menuju ke NULL dan Tail yang juga setelahnya menuju ke NULL.

Dalam Linked List terdapat berbagai macam cara Insertion dan Deletion.

1. Push Head : berarti menambahkan data dari depan.
    Misalkan kita mempunyai sebuah struct :
struct data{
int angka;
struct data*next, *prev;
}*head, *tail, *curr;
   Berikut merupakan contoh code untuk Push Head dalam double linked list:
void pushHead(int angka){
curr = (struct data*) malloc (sizeof(struct data));
curr->angka = angka;
if(head==NULL) head = tail = curr;
else{
curr->next = head;
head->prev = curr;
head = curr;
}
tail->next = head->prev = NULL;
}
2. Push Tail : berarti menambahkan data dari belakang.
    Berikut merupakan contoh code untuk Push Tail pada double linked list:
void pushTail(int angka){
curr = (struct data*) malloc (sizeof(struct data));
curr->angka = angka;
if(head==NULL) head = tail = curr;
else {
tail->next = curr;
curr->prev = tail;
tail = curr;
}
tail->next = head->prev = NULL;
}
3. Push Mid : berarti menyisipkan data dari tengah (digunakan untuk mengurutkan data).
    Berikut merupakan contoh code Push Mid pada double linked list:
void push(int angka){
curr = (struct data*) malloc (sizeof(struct data));
curr->angka = angka;
if(head==NULL) head = tail = curr;
else if(curr->angka < head->angka) pushHead(angka);
else if(curr->angka > tail->angka) pushTail(angka);
else{
struct data*temp;
temp = head;
while (temp->next->angka < curr->angka) temp = temp->next;
curr->next = temp->next;
temp->next->prev = curr;
temp->next = curr;
curr->prev = temp;
}
}
4. Pop Head : berarti menghapus data yang berada di depan.
    Berikut merupakan contoh code Pop Head dalam double linked list:
void popHead(){
curr = head;
head = head->next;
free(curr);
head->prev = NULL;
}
5. Pop Tail : berarti menghapus data yang berada di belakang.
    Berikut merupakan contoh code Pop Tail dalam double linked list:
void popTail(){
curr = tail;
tail = tail->prev;
free(curr);
tail->next = NULL;
}
6. Pop : berarti menghilangkan data yang kita inginkan.
    Berikut merupakan contoh code Pop dalam double linked list:
void pop(int angka){
if(head->angka == angka) popHead();
else if(tail->angka == angka) popTail();
else{
struct data*temp = head;
while(temp->next->angka!=angka) temp = temp->next;
curr = temp->next;
temp->next = curr->next;
curr->next->prev = temp;
free(curr);
}
}

Sekian materi yang dapat saya bagikan, Terima Kasih dan Selamat Belajar 😄





Comments

Popular Posts