Array and Array of Struct

int array[5],z;

struct data_mahasiswa{
       char name[100];
       };
      
data_mahasiswa data[5];
int input_data(int z){
 int y;
 y=z;
 for(int x=0; x<y; x++){
  system("cls");
  cout<<"\nMasukkan Nim : "; cin>>array[x];
  cout<<"\nMasukkan Nama : "; cin>>data[x].name;
  system("cls");
 }

 for(int x=0; x<y; x++){
  cout<<"\nNim : "<<array[x];
  cout<<"\tNama : "<<data[x].name<<endl;
  getch();
 }
};
     
int main(){
 cout<<"Berapa data yang ingin anda masukkan [1~5] : "<<endl;
 cin>>z;
 input_data(z);

}

Single Linked List Non Circular

struct simpul{
       int data;
       simpul *next;
       } *awal=NULL,*akhir=NULL,*baru, *bantu, *hapus, *temp1, *temp2;
      
void front_insert(int x){ //single linked list non-circular
     baru = new simpul; //membuat node baru
     baru->data=x; //masukkan data ke node baru
     baru->next=NULL;
     if(awal==NULL){ //apabila belum pernah membuat node, maka awal dan akhir adalah baru
     awal = akhir = baru;
        }
     else {
          baru->next=awal; //baru->next menunjuk ke awal
          awal=baru; //baru menjadi awal
          }
}

void rear_insert(int x){ //doubly linked list circular
     baru = new simpul; //membuat node baru
     baru->data=x; //masukkan data ke node baru
     baru->next=NULL;
     if(awal==NULL){ //apabila belum pernah membuat node, maka awal dan akhir adalah baru
        awal = akhir = baru;
        }
     else {
          akhir->next=baru; //akhir->next menunjuk baru
          akhir=baru; //baru menjadi akhir
          }
     }
    
    
void insert_tengah(int k)
{
     int count = 2, pos;
     baru=new simpul;         //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=awal;
     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=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=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_awal(){
 hapus = awal;
    awal = awal->next;
 delete hapus;
}

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

void print(){
    bantu=awal;
    if(awal!=NULL){
       while(bantu!=NULL){
             cout<<"["<<bantu->data<<"] "; //print dimulai dari depan
             bantu=bantu->next;       //pindah ke belakang dan seterusnya
       };
 }

}

void sum(){
 int total=0;
    bantu=awal;
    if(awal!=NULL){
       while(bantu!=NULL){
             total=total+bantu->data;
             bantu=bantu->next;       //pindah ke belakang dan seterusnya
       };
       cout<<"\nTotal = ["<<total<<"]"<<endl;
 }
}

void highest_value(){
 int data;
 //data=awal->data;
 temp1=awal;
 temp2=awal->next;
 if(awal!=NULL){
       while(temp2!=NULL){
             if(temp1->data<temp2->data){
              data=temp2->data;
             }
             temp2=temp2->next;       //pindah ke belakang dan seterusnya
       };
       cout<<"Nilai data terbesar : ["<<data<<"]"<<endl;
 }
}


int main()

    {

        int choice, num;

        while (1)

        {
   system("cls");
            cout<<"-----------------"<<endl;

            cout<<"Operations on DLLNC"<<endl;
           
            cout<<"---ueazyqbirydoc---"<<endl;

            cout<<"-----------------"<<endl;

            cout<<"1.Insert Depan "<<endl;

            cout<<"2.Insert Belakang "<<endl;

            cout<<"3.Insert Tengah"<<endl;

            cout<<"4.Delete Depan"<<endl;

      cout<<"5.Delete Belakang "<<endl;

            cout<<"6.Delete Tengah"<<endl;

            cout<<"7.Print"<<endl;
           
            cout<<"8.Total"<<endl;
           
            cout<<"9.Nilai Terbesar"<<endl;
           
            cout<<"10.Exit"<<endl;
           
            cout<<"Enter your choice : ";

            cin>>choice;

            switch(choice)

            {

            case 1:
    cout<<"Masukkan data : "; cin>>num;
                front_insert(num);
                break;

            case 2:
    cout<<"Masukkan data : "; cin>>num;
                rear_insert(num);
                break;

            case 3:
    cout<<"Masukkan data : "; cin>>num;
                insert_tengah(num);
                break;
           
   case 4:
    hapus_awal();
                break;

            case 5:
    hapus_akhir();
                break;

            case 6:
    cout<<"Hapus data ke "; cin>>num;
    hapus_tengah(num);
                break;
           
   case 7:
    print();
    getch();
                break;
               
   case 8:
    sum();
    getch();
    break;
  
   case 9:
    highest_value();
    getch();
    break;
   
            case 10:

                exit(1);

            default:

                cout<<"Wrong choice"<<endl;

            }

        }

    }
   

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;
}


Campuran Linked List Tambah Depan dan Tambah Belakang

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


SINGLE LINKED LIST NON-CIRCULAR
*TAMBAH DEPAN DAN TAMBAH BELAKANG

void tambah_awal_sllnc(int x){ //single linked list non-circular
     baru = new simpul; //membuat node baru
     baru->data=x; //masukkan data ke node baru
     baru->next=NULL;
     if(awal==NULL){ //apabila belum pernah membuat node, maka awal dan akhir adalah baru
        awal = akhir = baru;           
        }
     else {
          baru->next=awal; //baru->next menunjuk ke awal
          awal=baru; //sekarang, baru mennjadi awal
          }
}

void tambah_akhir_sllnc(int x){ //single linked list non-circular
     baru = new simpul; //membuat node baru
     baru->data=x; //masukkan data ke node baru
     baru->next=NULL;
     if(awal==NULL){ //apabila belum pernah membuat node, maka awal dan akhir adalah baru
        awal = akhir = baru;           
        }
     else {
          akhir->next=baru; //akhir->next menunjuk ke baru
          akhir=baru; //baru menjadi akhir
          }
}



SINGLE LINKED LIST CIRCULAR
*TAMBAH DEPAN DAN TAMBAH BELAKANG

void tambah_awal_sllc(int x){ //single linked list circular
     baru = new simpul; //membuat node baru
     baru->data=x; //masukkan data ke node baru
     baru->next=NULL;
     if(awal==NULL){ //apabila belum pernah membuat node, maka awal dan akhir adalah baru
        awal = akhir = baru;
  baru->next = baru ;  //baru->next menunjuk ke dirinya sendiri  
        }
     else {
          baru->next=awal; //baru->next menunjuk ke awal
          akhir->next=baru; //akhir->next menunjuk ke baru
          awal=baru; //baru menjadi awal
          }
 }

void tambah_akhir_sllc(int x){ //single linked list circular
     baru = new simpul; //membuat node baru
     baru->data=x; //masukkan data ke node baru
     baru->next=NULL;
     if(awal==NULL){ //apabila belum pernah membuat node, maka awal dan akhir adalah baru
        awal = akhir = baru;
  baru->next = baru ; //baru->next menunjuk ke dirinya sendiri          
        }
     else {
          baru->next=awal; //baru->next menunjuk ke awal
          akhir->next=baru; //akhir->next menunjuk ke baru
          akhir=baru; //baru menjadi akhir
          }
     }



DOUBLY LINKED LIST NON-CIRCULAR
*TAMBAH DEPAN DAN TAMBAH BELAKANG

void tambah_awal_dllnc(int x){ //doubly linked list non-circular
     baru = new simpul; //membuat node baru
     baru->data=x; //masukkan data ke node baru
     baru->next=NULL;
     baru->prev=NULL;
     if(awal==NULL){ //apabila belum pernah membuat node, maka awal dan akhir adalah baru
        awal = akhir = baru;           
        }
     else {
          baru->next=awal; //baru->next menunjuk ke awal
          awal->prev=baru; //awal->prev menunjuk ke baru
          awal=baru; //baru menjadi awal
          }
 }

void tambah_akhir_dllnc(int x){ //doubly linked list non-circular
     baru = new simpul; //membuat node baru
     baru->data=x; //masukkan data ke node baru
     baru->next=NULL;
     baru->prev=NULL;
     if(awal==NULL){ //apabila belum pernah membuat node, maka awal dan akhir adalah baru
        awal = akhir = baru;          
        }
     else {
          akhir->next=baru; //akhir->next menunjuk ke baru
          baru->prev=akhir; //baru->prev menunjuk ke akhir
          akhir=baru; //baru menjadi akhir
          }
     }



DOUBLY LINKED LIST CIRCULAR
*TAMBAH DEPAN DAN TAMBAH BELAKANG

void tambah_awal_dllc(int x){ //doubly linked list circular
     baru = new simpul; //membuat node baru
     baru->data=x; //masukkan data ke node baru
     baru->next=NULL;
     baru->prev=NULL;
     if(awal==NULL){ //apabila belum pernah membuat node, maka awal dan akhir adalah baru
        awal = akhir = baru;
  baru->next = baru ; //menunjuk ke
  baru->prev = baru ; //         dirinya sendiri
        }
     else {
          baru->next=awal; //baru->next menunjuk ke awal
          awal->prev=baru; //awal->prev menunjuk ke baru
          baru->prev=akhir; //baru->prev menunjuk ke akhir
          akhir->next=baru; //akhir->next menunjuk ke baru
    awal=baru;
          }
}

void tambah_akhir_dllc(int x){ //doubly linked list circular
     baru = new simpul; //membuat node baru
     baru->data=x; //masukkan data ke node baru
     baru->next=NULL;
     baru->prev=NULL;
     if(awal==NULL){ //apabila belum pernah membuat node, maka awal dan akhir adalah baru
        awal = akhir = baru;
  baru->next = baru ; //baru menunjuk ke
  baru->prev = baru ; //           dirinya sendiri
        }
     else {
          baru->next=awal; //baru->next menunjuk ke awal
          awal->prev=baru; //awal->prev menunjuk ke baru
          akhir->next=baru; //akhir->next menunjuk baru
          baru->prev=akhir; //baru->prev menunjuk ke akhir
          akhir=baru; //baru menjadi akhir
          }
     }