Senin, 01 Desember 2014

FIFO dan LIFO pada Linked List

Program FIFO dan LIFO pada Linked List


Script Program                 :

/*+********TUGAS PRAKTIKUM *********+*/

#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<ctype.h> //mengklasifikasi jenis karakter

using namespace std;

struct Node{ //merupakan struct node
     int data;
     Node *next;
};

Node *head, *tail;
//*********Mendefinisikan  fungsi-fungsi*********
void menu();
void metodeLIFO();
void metodeFIFO();
void inisialisasi();
void insertData();
void removeDepan();
void removeBelakang();
void bersih();
void tampil();

int main(){ //merupakan fungsi utama
     char pilihMetode;
     int ulangMetode = 1;

     do
     {
         cout<<"\t\t\t±±±±±±±±±±±±±±±±±±±±\n";
           cout<<"\t\t\t±  PILIHAN METODE: ±\n";
           cout<<"\t\t\t±±±±±±±±±±±±±±±±±±±±\n";
           cout<<"\n";
          cout<<"\t\t±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±\n";
           cout<<"\t\t±1. LIFO (Last In First Out) = Stack ±\n";
           cout<<"\t\t±2. FIFO (First In First Out) = Queue±\n";
           cout<<"\t\t±3. Exit                             ±\n";
          cout<<"\t\t±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±\n";

           printf("\n Masukkan Pilihan : ");
           pilihMetode = getche();
           printf("\n");

           switch(pilihMetode) //percabangan pemilihan metode
           {
           case '1' : //pilihan 1
                 metodeLIFO(); //STACK
                 break;
           case '2' : //pilihan 2
                 metodeFIFO(); //QUEUE
                 break;
           default :
                 {
                       puts("\nKode pilihan yang dimasukkan salah!\n");
                       puts("Tekan sembarang tombol untuk kembali ke menu!!");
                       getch();
                 }
                 break;
           }
     }
     while(ulangMetode == 1);
}

void menu() //menu dari metode
{
    cout<<"|-------------------------------|\n";
     cout<<"|         PILIHAN MENU        |\n";
    cout<<"|-------------------------------|\n";
     cout<<"|1. Masukkan Data               |\n";
     cout<<"|2. Hapus Data                  |\n";
     cout<<"|3. Cetak Data Linked List      |\n";
     cout<<"|4. Clear Data Linked List      |\n";
     cout<<"|5. Kembali ke Pilihan Metode   |\n";
    cout<<"|-------------------------------|\n";
     cout<<endl;
}

void metodeLIFO() //pendeklarasian metode LIFO (STACK)
{
     char pilihMenu;
     int ulang = 1;

     do
     {
           cout<<"++++++++++++++++++++++++++++++++++++\n";
           cout<<"+      LINKED LIST DENGAN LIFO     +\n";
           cout<<"++++++++++++++++++++++++++++++++++++\n";

           menu();
           printf("Pilihan Menu: ");
           pilihMenu = getche();
           printf("\n");
           switch(pilihMenu)
           {
           case '1' : //pilihan 1
                 insertData();
                 break;
           case '2' : //pilihan 2
                 removeBelakang();
                 break;
           case '3' : //pilihan 3
                 tampil();
                 break;
           case '4' : //pilihan 4
                 bersih();
                 break;
           case '5' : //pilihan 5
                 ulang = 0;
                 break;
           default :
                 {
                       puts("Menu yang dipilih salah!\n");
                       cout<<"-------------------------\n";
                      puts  ("Press Any Key to Back");
                      cout<<"-------------------------\n";
                       getch();
                 }
                 break;
           }
     }
     while(ulang == 1);
}

void metodeFIFO()//delarasi metode FIFO (Queue)
{
     char pilihMenu;
     int ulang = 1;

     do
     {
           cout<<"±+++++++++++++++++++++++++++++++++++\n";
           cout<<"+      LINKED LIST DENGAN FIFO     +\n";
           cout<<"++++++++++++++++++++++++++++++++++++\n";

           menu();
           printf("Pilihan Menu: ");
           pilihMenu = getche();
           printf("\n");

           switch(pilihMenu)
           {
           case '1' :
                 insertData();
                 break;
           case '2' :
                 removeDepan();
                 break;
           case '3' :
                 tampil();
                 break;
           case '4' :
                 bersih();
                 break;
           case '5' :
                 ulang = 0;
                 break;
           default :
                 {
                       puts("Pilihan menu anda masuukkan salah!\n");
                       cout<<"-------------------------\n";
                       puts  ("Press Any Key to Back");
                       cout<<"-------------------------\n";
                       getch();
                 }
                 break;
           }
     }
     while(ulang == 1);
}

void inisialisasi() //deklarasi fungsi insialisasi bahwa head dan tail bernilai NULL
{
     head = NULL;
     tail = NULL;
}

void insertData() //deklarasi memasukkan data
{
     int angka;
     Node *nodeBaru;
     nodeBaru = new Node;

     cout<<"Masukkan sebuah bilangan integer : ";
     cin>>angka;

     nodeBaru->data = angka;
     nodeBaru->next = NULL;

     if(tail == NULL)
     {
           head = tail = nodeBaru;
           tail->next = NULL;
     }
     else
     {
           tail->next = nodeBaru;
           tail = nodeBaru;
     }

     printf("Data %i masuk!\n\n", angka);
     cout<<"-------------------------\n";
     puts  ("Press Any Key to Back");
     cout<<"-------------------------\n";
     getch();
}

void removeDepan() //menghapus elemen depan untukmetode fifo
{
     int elDel;
     Node *del;
     del = new Node;

     if(tail != NULL)
     {
           del = head;
           elDel = del->data;

           if(head == tail)
           {
                 head = head->next;
                 tail = head;
           }
           else
                 head = head->next;

           delete del;

           printf("Data %i terhapus!\n\n", elDel);
     }
     else
     {
           puts("Linked List Empty! Tidak ada data yang dapat dihapus\n");
     }

     cout<<"-------------------------\n";
     puts  ("Press Any Key to Back");
     cout<<"-------------------------\n";
     getch();
}

void removeBelakang() //menghapus elemen belakang untuk metode LIFO
{
     int elDel;
     Node *del, *prevTail;
     del = new Node;

     if(tail != NULL)
     {
           del = tail;
           elDel = del->data;

           if(tail == head)
           {
                 inisialisasi(); //menginisialisasi
           }
           else
           {
                 prevTail = head;

                 while(prevTail->next != tail)
                       prevTail = prevTail->next;

                 tail = prevTail;
                 tail->next = NULL;
           }

           delete del; //menghapus elemen

           printf("Data %i terhapus!\n\n", elDel);
     }
     else
     {
           puts("Linked List Empty ! Tidak ada data yang dapat dihapus\n");
     }

     cout<<"-------------------------\n";
     puts  ("Press Any Key to Back");
     cout<<"-------------------------\n";
     getch();
}

void bersih() //untuk mereset semua elemen
{
     Node *clear, *point;

     if(tail != NULL)
     {
           point = head;

           while(point != NULL)
           {
                 clear = point;
                 point = point->next;

                 delete clear;
           }

           inisialisasi();

           puts("Linked list sudah dikosongkan\n");
     }
     else
           puts("Linked list masih kosong\n");

     cout<<"-------------------------\n";
     puts  ("Press Any Key to Back");
     cout<<"-------------------------\n";
     getch();
}

void tampil() //digunakan untuk menampilkan listnya
{
     Node *see;

     see = head;

     if(tail != NULL)
     {
           puts("Data-data yang ada didalam linked list :");
           puts("");

           while(see != NULL)
           {
                 printf("%i ", see->data);
                 see = see->next;
           }
           puts("\n");
     }
     else
           puts("Linked list kosong\n");
    cout<<"-------------------------\n";
     puts  ("Press Any Key to Back");
     cout<<"-------------------------\n";
     getch();
}

Output Program :

v  Pilihan Menu Utama 1 (LIFO)



ü  Pilihan menu 1

ü  Pilihan menu 3

ü  Pilihan menu 2





ü  Pilihan menu 4

ü  Pilihan 5
Kembali ke pilihan metode

v  Pilihan Menu Utama 2(FIFO)




ü  Pilihan menu 1

ü  Pilihan menu 3

ü  Pilihan menu 2




ü  PIlihan 4

ü  Pilihan 5
Kembali ke pilihan metode


0 komentar:

Posting Komentar