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