Data Structure GSCL (Insert & Delete)

PERBEDAAN LINKED LIST & ARRAY
-array merupakan kumpulan dari sejenis data, sedangkan linked list kumpulan dari berbagai macam data yang saling terkait.
-memori pada linked list lebih fleksibel, sedangkan memori pada array sejumlah yang telah ditentukan, tidak dapat dikurangi.
-dalam linked list sering menggunakan pointer, dalam array sedikit menggunakan pointer bahkan tidak dibutuhkan. 

SINGLE LINKED LIST
single linked list hanya mempunyai satu penghubung antar node.

DOUBLE LINKED LIST
mempunyai penghubung 2 arah antar node, jika ke selanjutnya maka bisa kembali. 

INSERTION (FRONT)
 struct tnode{
     int value; //buat masukin nilai
     struct tnode *next; //buat nunjuk selanjutnya
 };

 struct tnode *node = (struct tnode*)malloc(sizeof(struct tnode)); //buat alokasi memori sesuai struct
 node->value = x; //masukin inputan x ke node
 node->next = head; //pindahin headnya dulu ke selanjutnya
 head = node; //pindahin head lagi ke depan


INSERTION (MIDDLE)
void insertAfter(struct tnode *prev_node, int new_value){
    if(prev_node == NULL){ //angka sebelumnya tidak boleh kosong karena dia middle
        printf("Angka sebelumnya tidak boleh kosong");
        return;
    }
    struct tnode *baru = (struct tnode*)malloc(sizeof(struct tnode));
    baru->value = new_value; //buat masukin nilai ke dalem node
    baru->next = prev_node->next; //hubungin kalau next dari node sebelumnya sama dengan next dari node baru
    prev_node->next = baru; //buat ngehubungin dan posisiin node baru di depan prev node
}


INSERTION (LAST)
void insertLast(struct tnode *head, struct tnode *last, int input){
    struct tnode baru=(struct tnoe *)malloc(sizeof(struct tnode));
    baru->value=input; //buat masukin nilai ke dalam node
    baru->next=NULL; //karena dia last, next nya adalah kosong
   
    if(head==NULL){ //penanda kalau di list masih kosong, maka inputan menjadi head dan last sekaligus
        head=baru;
        last=baru;
    }
    else{
        last->next=baru; //menghubungkan last lama dengan last baru
        last=baru; //node baru menjadi last
    }


DELETE
void del(){
    int input;
    temp=head;
   
    if(head==NULL){
       printf("list is empty");
       }
     
    else{
        printf("enter the value to be delete\n");
        scanf("%d",&input);
      
        if(head->data==input){
            head = head->next; //kalau dia di posisi head, head di pindahin ke selanjutnya
        }
      
        else{
            while(head->next->data!=input){
                head = head->next; //head pindah ke selanjutnya
            }
            if(head->next==NULL) printf("the element not present\n");
          
            else if(head->next->next==NULL){
                last = head;
                head->next = head->next->next;
                printf("the element is deleted\n");
                head = temp;
            }
       }
    }
}


sumber:
https://forgetcode.com/C/273-Single-linked-list
https://socs.binus.ac.id/2017/03/15/single-linked-list/

Komentar

Postingan populer dari blog ini

HEAP & TRIES