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


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

}

Ilustrasi single linked list dan doubly linked list non circular.





Lihat juga codenya di SINI.

UTS Queue

using namespace std;
struct Queue //create a new data type
{
        int data[max];
   int head;
   int tail;
};
Queue antrian; //create a new var with queue data type
void create()
{
 antrian.head=antrian.tail=-1;
}
int IsEmpty()
{
 if(antrian.tail==-1)
   return 1;
   else
   return 0;
}
int IsFull()
{
 if(antrian.tail==max-1)
   return 1;
   else
   return 0;
}
void Enqueue(int data)
{
 if(IsEmpty()==1) //If true, this function will create the first data
   {
      antrian.head=antrian.tail=0;
      antrian.data[antrian.tail]=data;
      cout<<"Data "<<antrian.data[antrian.tail]<<"Masuk !!!";
   }
   else if(IsFull()==0) //If true, this function will be input the data after the first data
   {
    antrian.tail++;
      antrian.data[antrian.tail]=data;
      cout<<"Data "<<antrian.data[antrian.tail]<<"Masuk !!!";
   }
   else if(IsFull()==1) //If True, this function warn the user that the space of data is full
   {
    cout<<"Ruangan Penuh !!"<<endl;
      cout<<data<<"Ga Bisa Masuk !!!";
   }
}
void Dequeue()
{
 int i;
   int e = antrian.data[antrian.head];
   if(antrian.tail==-1)
   {
    cout<<"Ga Ada antrian... Data Kosong"<<endl;
   }
   else // to remove the first data that has been input.
   {
    for(i=antrian.head;i<antrian.tail-1;i++)
      {
       antrian.data[i]=antrian.data[i+1];
      }
      antrian.tail--;
      cout<<"Data yang keluar lebih dulu = "<<e<<endl;
   }
}
void clear() //to clear all of the data
{
 antrian.head=antrian.tail=-1;
  
   cout<<"Data Clear";
}
void tampil() //to display the data
{
 if(IsEmpty()==0)
   {
    cout<<"Data Dalam Antrian"<<endl;
      cout<<"=====================================";
      cout<<endl;
      for(int i=antrian.head;i<=antrian.tail;i++)
      {
       cout<<"| " <<antrian.data[i]<<" |";
      }
   }
   else
   {
    cout<<"Ga ada antrian... Data kosong";
   }
}
int main()
{
 int pil;
   int data;
   create();
   do
   {
    system("cls");
      cout<<"Implementasi Antrian dengan Struct"<<endl;
      cout<<"==========================================";
      cout<<endl;
      cout<<"1. Enqueue"<<endl;
      cout<<"2. Dqueue "<<endl;
      cout<<"3. Print "<<endl;
      cout<<"4. Clear "<<endl;
      cout<<"5. Exit "<<endl;
      cout<<"Masukkan pilihan anda : ";
      cin>>pil;
      switch(pil)
      {
       case 1:
         {
          cout<<endl;
            cout<<"Data = ";
            cin>>data;
            Enqueue(data);
            break;
         }
         case 2:
         {
          cout<<endl;
            Dequeue();
            break;
         }
         case 3:
         {
          cout<<endl;
            tampil();
            break;
         }
         case 4:
         {
          cout<<endl;
            clear();
            break;
         }
      }
      getch();
   }
   while(pil!=5);
}

UTS Stack

int stack[11];
void menu ()
{
 cout<<"1.Push\n2. Pop\n3. Clear\n4. Print\n5. Exit\nPilihan Anda : "; //For Show The Menu
}
int push (int j) //Input data on the stack
{
 if (j<10)
 {
  if(j==-1)
  {
   j=0;//indicator index
   }
  cout<<"Masukkan Data (int) = ";
  cin>>stack [j];//input for data stack and j as a value index the array
  cout<<"Data berhasil dipush\n";
  j++;//increment for index the array
  }
 else
 {
  cout<<"Stack penuh, harap lakukan pop data dahulu\n";
  }
 return j;
}
int pop (int j)
{
 if(j>=0)
 {
  j--;

  cout<<"Data "<<stack[j]<<" Dipop\n";
  }
 else
 {
  cout<<"Stack kosong,harap lakukan push data dahulu\n";
  }
 return j;
}
void print (int j)
{
 if(j>=0)
 {
  for(int i=j-1;i>=0;i--)
  {
   cout<<"["<<stack[i]<<"]\n";
   }
 
  }
 else
 {
  cout<<"Stack kosong,harap lakukan push terlebih dahulu\n";
  }
}
main ()
{
 int i=-1,pilih;

 start:
  system ("cls");
  menu ();
  cin>>pilih;
  if(pilih==1)
  {
   i=push(i);
   cout<<"Jumlah isi stack : "<<i<<endl;
   getch ();
   goto start;
   }
  else if (pilih==2)
  {
   i=pop(i);
   getch ();
   goto start;
   }
  else if (pilih==3)
  {
   for(int x=0;x<i;x++)
   {
    stack[x]=NULL;//NULL = empty.
    }
   i=-1;//change the index to be -1, it means empty/ no array
   cout<<"Semua data terhapus\n";
   cout<<stack[1];
   getch();
   goto start;
   }
  else if (pilih==4)
  {
   print(i);
   getch();
   goto start;
   }
  else if (pilih==5)
  {
   cout<<"\n\nTerima Kasih\n";
   }
  else
  {
   cout<<"Input salah\n";
   getch();
   goto start;
   }
  return 0;
}

STACK

int stack[11];

void menu ()
{
    cout<<"1.Push\n2. Pop\n3. Clear\n4. Print\n5. Exit\nPilihan Anda : "; //untuk menampilkan menu
}

int push (int j) //input data on the stack
{
    if (j<10)
    {
        if(j==-1)
        {
            j=0;//indikator index
            }
        cout<<"Masukkan Data (int) = ";
        cin>>stack [j];//data stack yang diinput dan j sebagai nilai indexing arraynya
        //cout<<"Sebelum ditambah j++ : "<<j<<endl;
        cout<<"Data berhasil dipush\n";
        j++;//indexing arraynya bertambah 1
        //cout<<"Setelah ditambah j++ : "<<j<<endl;
        }
    else
    {
        cout<<"Stack penuh, harap lakukan pop data dahulu\n";
        }
    return j;
}

int pop (int j)
{
    if(j>=0)
    {
        cout<<"Nilai j : "<<j<<endl;
        j--;
        cout<<"Nilai j : "<<j<<endl;
        cout<<"Data "<<stack[j]<<" Dipop\n";
        }
    else
    {
        cout<<"Stack kosong,harap lakukan push data dahulu\n";
        }
    return j;
}

void print (int j)
{
    if(j>=0)
    {
        for(int i=j-1;i>=0;i--)
        {
            cout<<"["<<stack[i]<<"]\n";
            }
        //cout<<stack[1];
        }
    else
    {
        cout<<"Stack kosong,harap lakukan push terlebih dahulu\n";
        }
}

main ()
{
    int i=-1,pilih;
   
    start:
        system ("cls");
        menu ();
        cin>>pilih;
        if(pilih==1)
        {
            i=push(i);
            cout<<"Jumlah isi stack : "<<i<<endl;
            getch ();
            goto start;
            }
        else if (pilih==2)
        {
            i=pop(i);
            cout<<"Nilai i : "<<i<<endl;
            getch ();
            goto start;
            }
        else if (pilih==3)
        {
            for(int x=0;x<i;x++)
            {
                stack[x]=NULL;//NULL = kosong
                }
            i=-1;//mengubah index menjadi -1 berarti kosong/ngga ada array -1
            cout<<"Semua data terhapus\n";
            cout<<stack[1];
            getch();
            goto start;
            }
        else if (pilih==4)
        {
            print(i);
            getch();
            goto start;
            }
        else if (pilih==5)
        {
            cout<<"\n\nTerima Kasih\n";
            }
        else
        {
            cout<<"Input salah\n";
            getch();
            goto start;
            }
        return 0;
}

QUEUE


using namespace std;
struct Queue //struct untuk queue untuk semua tipe data di dalamnya integer
{
    int data[max];
   int head;
   int tail;
};

Queue antrian; //stack queue dengan nama antrian

void create()
{
 antrian.head=antrian.tail=-1;//untuk indexing
}

int IsEmpty()
{
 if(antrian.tail==-1)
   return 1;// kalo data kosong
   else
   return 0;// ada isinya
}

int IsFull()
{
 if(antrian.tail==max-1)//apabila tail sama dengan data max yang ke 9
   return 1;
   else
   return 0;
}

void Enqueue(int data)
{
 if(IsEmpty()==1)//ini untuk logic data yang masih awal,belum jadi data ke 0
   {
      antrian.head=antrian.tail=0;
      antrian.data[antrian.tail]=data;
      cout<<"Data "<<antrian.data[antrian.tail]<<"Masuk !!!";
   }
   else if(IsFull()==0)
   {
    antrian.tail++;
      antrian.data[antrian.tail]=data;
      cout<<"Data "<<antrian.data[antrian.tail]<<"Masuk !!!";
   }
   else if(IsFull()==1)
   {
    cout<<"Ruangan Penuh !!"<<endl;
      cout<<data<<"Ga Bisa Masuk !!!";
   }
}

void Dequeue()
{
 int i;
   int e = antrian.data[antrian.head];//untuk menampung nilai dari data pertama
   if(antrian.tail==-1)
   {
    cout<<"Ga Ada antrian... Data Kosong"<<endl;
   }
   else
   {
    for(i=antrian.head;i<antrian.tail;i++)
      {
       antrian.data[i]=antrian.data[i+1];//untuk mengoverwrite nilai dari tail yang sebelumnya
      }
      antrian.data[antrian.tail]=NULL;//untuk menghilangkan data
      antrian.tail--;
      cout<<"Data yang keluar lebih dulu = "<<e<<endl;
   }
}

void clear()
{
    for(int i=antrian.head;i<=antrian.tail;i++)
    {
        antrian.data[i]=NULL;
        }
 antrian.head=antrian.tail=-1;
  
   cout<<"Data Clear";
}
void tampil()
{
 if(IsEmpty()==0)
   {
    cout<<"Data Dalam Antrian"<<endl;
      cout<<"=====================================";
      cout<<endl;
      for(int i=antrian.head;i<=antrian.tail;i++)
      {
       cout<<"| " <<antrian.data[i]<<" |";
      }
   }
   else
   {
    cout<<"Ga ada antrian... Data kosong";
   }
}
int main()
{
 int pil;
   int data;
   create();
   do
   {
    system("cls");
      cout<<"Implementasi Antrian dengan Struct"<<endl;
      cout<<"==========================================";
      cout<<endl;
      cout<<"1. Enqueue"<<endl;
      cout<<"2. Dqueue "<<endl;
      cout<<"3. Print "<<endl;
      cout<<"4. Clear "<<endl;
      cout<<"5. Exit "<<endl;
      cout<<"Masukkan pilihan anda : ";
      cin>>pil;
      switch(pil)
      {
       case 1:
         {
          cout<<endl;
            cout<<"Data = ";
            cin>>data;
            Enqueue(data);
            break;
         }
         case 2:
         {
          cout<<endl;
            Dequeue();
            break;
         }
         case 3:
         {
          cout<<endl;
            tampil();
            break;
         }
         case 4:
         {
          cout<<endl;
            clear();
            break;
         }
      }
      getch();
   }
   while(pil!=5);
}

Stack Menggunakan Struct

#include<---->


struct tumpukan{
 int stk;
};
tumpukan stack[11];
void menu ()
{
 cout<<"1.Push\n2. Pop\n3. Clear\n4. Print\n5. Exit\nPilihan Anda : "; //untuk menampilkan menu
}
int push (int j) //input data on the stack
{
 if (j<10)
 {
  if(j==-1)
  {
   j=0;//indikator index
   }
  cout<<"Masukkan Data (int) = ";
  cin>>stack[j].stk;//data stack yang diinput dan j sebagai nilai indexing arraynya
  //cout<<"Sebelum ditambah j++ : "<<j<<endl;
  cout<<"Data berhasil dipush\n";
  j++;//indexing arraynya bertambah 1
  //cout<<"Setelah ditambah j++ : "<<j<<endl;
  }
 else
 {
  cout<<"Stack penuh, harap lakukan pop data dahulu\n";
  }
 return j;
}
int pop (int j)
{
 if(j>=0)
 {
  cout<<"Nilai j : "<<j<<endl;
  j--;
  cout<<"Nilai j : "<<j<<endl;
  cout<<"Data "<<stack[j].stk<<" Dipop\n";
  }
 else
 {
  cout<<"Stack kosong,harap lakukan push data dahulu\n";
  }
 return j;
}
void print (int j)
{
 if(j>=0)
 {
  for(int i=j-1;i>=0;i--)
  {
   cout<<"["<<stack[i].stk<<"]\n";
   }
  //cout<<stack[1];
  }
 else
 {
  cout<<"Stack kosong,harap lakukan push terlebih dahulu\n";
  }
}
main ()
{
 int i=-1,pilih;

 start:
  system ("cls");
  menu ();
  cin>>pilih;
  if(pilih==1)
  {
   i=push(i);
   cout<<"Jumlah isi stack : "<<i<<endl;
   getch ();
   goto start;
   }
  else if (pilih==2)
  {
   i=pop(i);
   cout<<"Nilai i : "<<i<<endl;
   getch ();
   goto start;
   }
  else if (pilih==3)
  {
   for(int x=0;x<i;x++)
   {
    stack[x].stk=NULL;//NULL = kosong
    }
   i=-1;//mengubah index menjadi -1 berarti kosong/ngga ada array -1
   cout<<"Semua data terhapus\n";
   cout<<stack[1].stk;
   getch();
   goto start;
   }
  else if (pilih==4)
  {
   print(i);
   getch();
   goto start;
   }
  else if (pilih==5)
  {
   cout<<"\n\nTerima Kasih\n";
   }
  else
  {
   cout<<"Input salah\n";
   getch();
   goto start;
   }
  return 0;
}

Program Billing Warnet

#include<------>

struct waktu
{
 int detik;
 int menit;
 int jam;
};
struct id
{
 string username;
 string password;
};
struct tarif
{
 waktu main;
 id pelanggan;
 int tarif;
};

int main ()
{
 tarif bil;
 cout<<"Username : ";cin>>bil.pelanggan.username;
 cout<<"Password : ";cin>>bil.pelanggan.password;
 cout<<"Lama Penggunaan"<<endl;
 cout<<"Jam : ";cin>>bil.main.jam;
 cout<<"Menit : ";cin>>bil.main.menit;
 cout<<"Detik : ";cin>>bil.main.detik;
 bil.tarif=(3600*bil.main.jam)+(60*bil.main.menit)+bil.main.detik; //Harga Rp.1/detik
 cout<<"Harga : RP."<<bil.tarif;
 getch();
}