Home » » Code sllnc and dllnc *tambah tengah *hapus tengah *print Dan CIRCULAR.

Code sllnc and dllnc *tambah tengah *hapus tengah *print Dan CIRCULAR.

SINGLE LINKED LIST NON CIRCULAR
*TAMBAH TENGAH, HAPUS TENGAH, PRINT

struct node {
       int data;
       node *next;
       }*head, *tail,*baru,*bantu,*ins,*hapus;

void insert_tengah(int k)
{
     int count = 2, pos;
     baru=new node;         //membuat node baru
     baru->data=k;                              //masukkan data ke node
     baru->next=NULL;    
     cout<<"Masukan data pada posisi ke = "; cin>>pos; //masukkan node ke posisi
    
                 bantu=head;
     while(bantu){
                  if(count == pos) //berhenti di posisi sebelum node yang akan ditambahkan
                  {
                              baru->next=bantu->next; //baru->next mengarah seperti arah bantu->next
                              bantu->next=baru; //bantu->next mengarah ke baru
                              break; //menghentikan while-do
                  }
                  bantu=bantu->next; //pindah ke node selanjutnya
                  count++;
                  }
   
}

void hapus_tengah(int number){
     int count=1;
     bantu=head;
     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
                                 hapus->next=NULL; //hapus->next NULL
                                 delete hapus; //delete hapus
                                 break;
             }
             count++;                       
     }
     cout<<"\ndata "<<temp<<" pada urutan ke-"<<number<<" terhapus\n";
}

Void print(){
                   bantu=head;
       while(bantu){
             cout<<"["<<bantu->data<<"] ";
             bantu=bantu->next;      
       }
}



DOUBLY LINKED LIST NON CIRCULAR
*TAMBAH TENGAH, HAPUS TENGAH, PRINT FORWARD & PRINT BACKWARD

struct node {
       int data;
       node *next, *prev;
       }*head, *tail,*p,*bantu,*ins,*hapus;

void insert_tengah(int k)
{
     int count = 2, pos;
     baru=new node;         //membuat node baru
     baru->data=k;                              //masukkan data ke node
     baru->next=NULL;
                 baru->prev=NULL          
     cout<<"Masukan data pada posisi ke = "; cin>>pos; //masukkan node ke posisi
    
                 bantu=head;
     while(bantu){
                  if(count == pos) //berheenti di posisi sebelum node yang akan ditambahkan
                  {
                              baru->next=bantu->next; //baru->next mengarah seperti arah bantu->next
                              bantu->next->prev=baru; //node setelah bantu prevnya mengarah ke node baru
                              baru->prev=bantu; //baru->prev mengarah ke bantu
                              bantu->next=baru; //bantu->next mengarah ke baru
                              break; //menghentikan while-do
                  }
                  bantu=bantu->next; //pindah ke node selanjutnya
                  count++;
                  }
   
}

void hapus_tengah(int number){
     int count=1;
     bantu=head;
     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
                                 hapus->next=hapus->prev=NULL; //hapus->next dan hapus->prev NULL
                                 delete hapus; //delete hapus
                                 break;
             }
             count++;                        
     }
     cout<<"\ndata "<<temp<<" pada urutan ke-"<<number<<" terhapus\n";
}

Void print_forward(){
                   bantu=head;
       while(bantu){
             cout<<"["<<bantu->data<<"] "; //print dimulai dari depan
             bantu=bantu->next;       //pindah ke belakang dan seterusnya
       }
}

Void print_backward(){
                   bantu=tail;
       while(bantu){
             cout<<"["<<bantu->data<<"] "; //print dimulai dari belakang
             bantu=bantu->prev;       //pindah ke depan dan seterusnya
       }
}


SINGLE LINKED LIST CIRCULAR
*PRINT
NOTE : TAMBAH TENGAH DAN HAPUS TENGAH SAMA DENGAN YANG NON-CIRCULAR



Void print_circular(){

                   bantu=head;

       do{ //eksekusi terlebih dahulu setelah itu di cek

             cout<<"["<<bantu->data<<"] ";

             bantu=bantu->next;      

       }while(bantu!=head); //berhenti ketika bantu sama dengan head

}



DOUBLY LINKED LIST CIRCULAR
*PRINT
NOTE : TAMBAH TENGAH DAN HAPUS TENGAH SAMA DENGAN YANG NON-CIRCULAR



Void print_forward_circular(){

                   bantu=head;

       do{ //eksekusi terlebih dahulu setelah itu di cek

             cout<<"["<<bantu->data<<"] "; //print dimulai dari depan

             bantu=bantu->next;       //pindah ke belakang dan seterusnya

       }while(bantu!=head); //berhenti ketika bantu sama dengan head

}



Void print_backward_circular(){

                   bantu=tail;

       do{ //eksekusi terlebih dahulu setelah itu di cek

             cout<<"["<<bantu->data<<"] "; //print dimulai dari belakang

             bantu=bantu->prev;       //pindah ke depan dan seterusnya

       }while(bantu!=tail); //berhenti ketika bantu sama dengan tail

}

0 komentar: