Home » » Linked List Completed *Hapus Depan, Hapus Tengah dan Hapus Belakang

Linked List Completed *Hapus Depan, Hapus Tengah dan Hapus Belakang

SINGLE LINKED LIST NON-CIRCULAR

struct simpul{
       int data;
       simpul *next;
       } *awal=NULL,*akhir=NULL,*baru, *bantu, *hapus;

void hapus_awal(){
    hapus = awal;
    awal = awal->next;
    delete hapus;
}

void hapus_tengah(int number){
     int count=1;
     bantu=awal;
     while(bantu){
             if(count==number-1){ //berhenti di posisi sebelum node yang akan dihapus
                                 hapus=bantu->next; //hapus menjadi node setelah bantu
                                 bantu->next=hapus->next; //bantu->next mengarah sama seperti hapus->next
                                 delete hapus; //delete hapus
                                 break;
             }
             count++;
    bantu=bantu->next;                       
     }
}

void hapus_akhir(){
  bantu=awal;
       while(bantu){
             if(bantu->next==akhir){
               hapus=akhir;
               akhir=bantu;
               akhir->next=NULL;
               delete hapus;
               break;
             }
             bantu=bantu->next;
       }
}




SINGLE LINKED LIST CIRCULAR

struct simpul{
       int data;
       simpul *next;
       } *awal=NULL,*akhir=NULL,*baru, *bantu, *hapus;

void hapus_awal(){
 hapus = awal;
    awal = awal->next;
    akhir->next = awal;
 delete hapus;
}

void hapus_tengah(int number){
     int count=1;
     bantu=awal;
     while(bantu){
             if(count==number-1){ //berhenti di posisi sebelum node yang akan dihapus
                                 hapus=bantu->next; //hapus menjadi node setelah bantu
                                 bantu->next=hapus->next; //bantu->next mengarah sama seperti hapus->next
                                 delete hapus; //delete hapus
                                 break;
             }
             count++;
    bantu=bantu->next;                       
     }
}

void hapus_akhir(){
  bantu=awal;
       while(bantu){
             if(bantu->next==akhir){
               hapus=akhir;
               akhir=bantu;
               akhir->next=awal;
               delete hapus;
               break;
             }
             bantu=bantu->next;
       }
}




DOUBLY LINKED LIST NON-CIRCULAR

struct simpul{
       int data;
       simpul *next, *prev;
       } *awal=NULL,*akhir=NULL,*baru, *bantu, *hapus;
  
void hapus_awal(){
    hapus = awal;
    awal = awal->next;
    awal->prev = NULL;
    delete hapus;
}
    
void hapus_tengah(int number){
     int count=1;
     bantu=awal;
     while(bantu){
             if(count==number-1){ //berhenti di posisi sebelum node yang akan dihapus
                                 hapus=bantu->next; //hapus menjadi node setelah bantu
                                 hapus->next->prev=bantu; //node setelah hapus prevnya mengarah ke bantu
                                 bantu->next=hapus->next; //bantu->next mengarah sama seperti hapus->next
                                 delete hapus; //delete hapus
                                 break;
             }
             count++;
    bantu=bantu->next;                       
     }
}

void hapus_akhir(){
    hapus = akhir;
    akhir = akhir->prev;
    akhir->next = NULL;
    delete hapus;
}




DOUBLY LINKED LIST CIRCULAR

struct simpul{
       int data;
       simpul *next, *prev;
       } *awal=NULL,*akhir=NULL,*baru, *bantu, *hapus;

void hapus_awal(){
    hapus = awal;
    awal = awal->next;
    akhir->next = awal;
    awal->prev = akhir;
    delete hapus;
}

void hapus_tengah(int number){
     int count=1;
     bantu=awal;
     while(bantu){
             if(count==number-1){ //berhenti di posisi sebelum node yang akan dihapus
                                 hapus=bantu->next; //hapus menjadi node setelah bantu
                                 hapus->next->prev=bantu; //node setelah hapus prevnya mengarah ke bantu
                                 bantu->next=hapus->next; //bantu->next mengarah sama seperti hapus->next
                                 delete hapus; //delete hapus
                                 break;
             }
             count++;
             bantu=bantu->next;                       
     }
}

void hapus_akhir(){
    hapus = akhir;
    akhir = akhir->prev;
    akhir->next = awal;
    awal->prev = akhir;
    delete hapus;
}


0 komentar: