Berikut ini merupakan contoh program yang menggunakan 2 metode, yaitu :
LIFO
(Last In First Out), aplikasinya : Stack (Tumpukan)
FIFO
(First In First Out), aplikasinya : Queue (Antrean)
Sourcecode :
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct Node
{
int data;
Node *next;
};
Node *head, *tail;
void headerProgram();
void menu();
void metodeLIFO();
void metodeFIFO();
void inisialisasi();
void insertData();
void removeDepan();
void removeBelakang();
void bersih();
void tampil();
void main()
{
char
pilihMetode;
int
ulangMetode = 1;
do
{
headerProgram();
cout<<"Pilih
metode input data : \n";
cout<<"\n";
cout<<"1.
LIFO (Last In First Out) : Stack
(Tumpukan)\n";
cout<<"2.
FIFO (First In First Out) : Queue (Antrian)\n";
cout<<"3.
Exit \n";
cout<<endl;
printf("Masukkan
Pilihan Anda : ");
pilihMetode
= getche();
printf("\n");
switch(pilihMetode)
{
case '1'
:
metodeLIFO();
break;
case '2'
:
metodeFIFO();
break;
case '3' :
exit(0);
break;
default :
{
puts("\nMaaf...Kode
pilihan yang Anda masukkan Salah!!!\n");
puts(":::
Tekan sembarang tombol untuk kembali ke menu :::");
getch();
}
break;
}
}
while(ulangMetode
== 1);
}
void headerProgram()
{
cout<<"±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±\n";
cout<<"± SINGLE LINKED LIST WITH LIFO AND FIFO ±\n";
cout<<"±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±\n";
cout<<endl;
}
void menu()
{
cout<<"========
Menu :\========\n";
cout<<"\n\n";
cout<<"1.
Insert data\n";
cout<<"2.
Remove data\n";
cout<<"3.
Print data linked list\n";
cout<<"4.
Clear data linked list\n";
cout<<"5.
Kembali ke pilihan metode\n";
cout<<"6. Exit\n";
cout<<endl;
}
void metodeLIFO()
{
char
pilihMenu;
int ulang = 1;
do
{
system("cls");
headerProgram();
cout<<"--
LIFO --\n";
cout<<endl;
menu();
printf("Pilihan
: ");
pilihMenu
= getche();
printf("\n\n");
switch(pilihMenu)
{
case '1'
:
insertData();
break;
case '2'
:
removeBelakang();
break;
case '3'
:
tampil();
break;
case '4'
:
bersih();
break;
case '5'
:
ulang
= 0;
break;
case '6' :
exit(0);
break;
default
:
{
puts("Maaf...
Pilihan menu yang Anda pilih Salah!\n");
puts(":::
Tekan sembarang tombol untuk kembali ke menu :::");
getch();
}
break;
}
}
while(ulang ==
1);
}
void metodeFIFO()
{
char
pilihMenu;
int ulang = 1;
do
{
system("cls");
headerProgram();
cout<<"--
FIFO --\n";
cout<<endl;
menu();
printf("Pilihan
: ");
pilihMenu
= getche();
printf("\n\n");
switch(pilihMenu)
{
case '1'
:
insertData();
break;
case '2'
:
removeDepan();
break;
case '3'
:
tampil();
break;
case '4'
:
bersih();
break;
case '5'
:
ulang = 0;
break;
case '6' :
exit(0);
break;
default
:
{
puts("Maaf...
Pilihan menu yang Anda Pilih Salah!\n");
puts(":::
Tekan sembarang tombol untuk kembali ke menu :::");
getch();
}
break;
}
}
while(ulang ==
1);
}
void inisialisasi()
{
head = NULL;
tail = NULL;
}
void insertData()
{
int angka;
Node
*nodeBaru;
nodeBaru = new
Node;
cout<<"Masukkan
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);
puts(":::
Tekan sembarang tombol untuk kembali ke menu :::");
getch();
}
void removeDepan()
{
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 telah terhapus!\n\n", elDel);
}
else
{
puts("--> Linked list telah kosong! Tidak ada data yang
dapat dihapus! <--\n");
}
puts(":::
Tekan sembarang tombol untuk kembali ke menu :::");
getch();
}
void removeBelakang()
{
int elDel;
Node *del,
*prevTail;
del = new
Node;
if(tail !=
NULL)
{
del =
tail;
elDel =
del->data;
if(tail
== head)
{
inisialisasi();
}
else
{
prevTail
= head;
while(prevTail->next
!= tail)
prevTail
= prevTail->next;
tail
= prevTail;
tail->next
= NULL;
}
delete
del;
printf("Data
%i telah terhapus!\n\n", elDel);
}
else
{
puts("--> Linked list kosong! Tidak ada data yang dapat
dihapus! <--\n");
}
puts(":::
Tekan sembarang tombol untuk kembali ke menu :::");
getch();
}
void bersih()
{
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");
puts(":::
Tekan sembarang tombol untuk kembali ke menu :::");
getch();
}
void tampil()
{
Node *see;
see = head;
if(tail !=
NULL)
{
puts("====================================");
puts("Data
yang ada di dalam linked list :");
puts("====================================");
puts("");
while(see
!= NULL)
{
printf("%i
", see->data);
see
= see->next;
}
puts("\n");
}
else
puts("-->
Linked list masih dalam keadaan kosong <--\n");
puts(":::
Tekan sembarang tombol untuk kembali ke menu :::");
getch();
}
0 komentar:
Posting Komentar