Oke kali ini saya akan membagikan salah satu contoh program Queue. Queue Sendiri merupakan suatu struktur data linier. Queue (Antrian) disebut juga“Waiting Line”, yaitu penambahan elemen baru dilakukan pada bagian belakang dan penghapusan elemen dilakukan pada bagian depan. Konsepnya hampir sama dengan Stack, perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang bebeda. Oke dibawah ini merupakan contoh program Queue dalam penerapan antrian keberangkatan pesawat.
- SOURCE CODE
#include<iostream>l
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#include <windows.h>
using namespace std;
struct Node{
int data;
Node *next;
};
Node *head, *tail;
void menu();
void LinkedList();
void penutup();
void inisialisasi();
void insertData();
void removeData();
void bersih();
void tampil();
int main(){
system("color 5b");
char MENU;
int ulangMetode = 1;
do
{
printf("||= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =||\n");
printf("|| Program Antrian Keberangkatan Pesawat Konoha Airlines ||\n");
printf("||=======================================================================||\n");
cout<<"\n\n";
cout<<" ||+++++++++++++++++++++++++++++++++++++++++||\n";
cout<<" ||*** MENU UTAMA ***||\n";
cout<<" ||-----------------------------------------||\n";
cout<<" || 1. Pendaftaran Pesawat Konoha Airlines ||\n";
cout<<" || 2. Exit ||\n";
cout<<" ||+++++++++++++++++++++++++++++++++++++++++||\n";
cout<<endl;
printf("Masukkan Pilihan Anda ?: ");
MENU = getche();
printf("\n");
getch();
system("cls");
switch(MENU)
{
case '1' :
LinkedList();
break;
case '2' :
penutup();
break;
default :
{
puts("\nKode yang dimasukkan salah!\n");
puts("Press any key for back to the menu");
getch();
}
break;
}
}
while(ulangMetode == 1);
}
//menu dari metode
void menu()
{
cout<<"||+++++++++++++++++++++++++++++++++++++++++++||\n";
cout<<"|| ***** PILIHAN MENU ***** ||\n";
cout<<"||-------------------------------------------||\n";
cout<<"|| 1. Daftar Antrian Pesawat<KODE PESAWAT> ||\n";
cout<<"|| 2. Keberangkatan ||\n";
cout<<"|| 3. Lihat Daftar Antrian Pesawat ||\n";
cout<<"|| 4. Memberangkatkan Semua Antrian ||\n";
cout<<"|| 5. Exit ||\n";
cout<<"||+++++++++++++++++++++++++++++++++++++++++++||\n";
cout<<endl;
}
//metode linked list
void LinkedList()
{
char pilihMenu;
int ulang = 1;
do
{
menu();
printf("Input Menu : ");
pilihMenu = getche();
printf("\n");
switch(pilihMenu)
{
case '1' :
insertData();
break;
case '2' :
removeData();
break;
case '3' :
tampil();
break;
case '4' :
bersih();
break;
case '5' :
penutup();
break;
default :
{
puts("Input menu salah!\n");
puts("Press any key for back to the menu");
getch();
}
break;
}
}
while(ulang == 1);
}
/*fungsi insialisasi bahwa
head dan tail bernilai NULL*/
void inisialisasi()
{
head = NULL;
tail = NULL;
}
//fungsi untuk memasukkan data
void insertData()
{
int angka;
Node *nodeBaru;
nodeBaru = new Node;
cout<<"Masukkan Data : ";
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("Press any key for back to the menu");
getch();
system("cls");
}
/*untuk hapus elemen belakang
untuk metode LIFO*/
void removeData()
{
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 Diberangkatkan!\n\n", elDel);
}
else
{
puts("Data Kosong! Tidak ada data yang dapat diberangkatkan!\n");
}
puts("Press any key for back to the menu");
getch();
system("cls");
}
//untuk hapus semua elemen
void bersih()
{
Node *clear, *point;
if(tail != NULL)
{
point = head;
while(point != NULL)
{
clear = point;
point = point->next;
delete clear;
}
inisialisasi();
puts("Semua Data Diberangkatkan!\n");
}
else
puts("Data Masih Kosong!\n");
puts("Press any key for back to the menu");
getch();
system("cls");
}
//untuk menampilkan list data
void tampil()
{
Node *see;
see = head;
if(tail != NULL)
{
puts("Daftar Data Antrian Pesawat Konoha Airlines :");
puts("");
while(see != NULL)
{
printf("%i ", see->data);
see = see->next;
}
puts("\n");
}
else
puts("Data masih dalam keadaan kosong!\n");
puts("Press any key for back to the menu");
getch();
system("cls");
}
//fungsi penutup / keluar
void penutup()
{
cout<<"\n\tPROGRAM EXIT"<<endl;
exit(0);
}
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#include <windows.h>
using namespace std;
struct Node{
int data;
Node *next;
};
Node *head, *tail;
void menu();
void LinkedList();
void penutup();
void inisialisasi();
void insertData();
void removeData();
void bersih();
void tampil();
int main(){
system("color 5b");
char MENU;
int ulangMetode = 1;
do
{
printf("||= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =||\n");
printf("|| Program Antrian Keberangkatan Pesawat Konoha Airlines ||\n");
printf("||=======================================================================||\n");
cout<<"\n\n";
cout<<" ||+++++++++++++++++++++++++++++++++++++++++||\n";
cout<<" ||*** MENU UTAMA ***||\n";
cout<<" ||-----------------------------------------||\n";
cout<<" || 1. Pendaftaran Pesawat Konoha Airlines ||\n";
cout<<" || 2. Exit ||\n";
cout<<" ||+++++++++++++++++++++++++++++++++++++++++||\n";
cout<<endl;
printf("Masukkan Pilihan Anda ?: ");
MENU = getche();
printf("\n");
getch();
system("cls");
switch(MENU)
{
case '1' :
LinkedList();
break;
case '2' :
penutup();
break;
default :
{
puts("\nKode yang dimasukkan salah!\n");
puts("Press any key for back to the menu");
getch();
}
break;
}
}
while(ulangMetode == 1);
}
//menu dari metode
void menu()
{
cout<<"||+++++++++++++++++++++++++++++++++++++++++++||\n";
cout<<"|| ***** PILIHAN MENU ***** ||\n";
cout<<"||-------------------------------------------||\n";
cout<<"|| 1. Daftar Antrian Pesawat<KODE PESAWAT> ||\n";
cout<<"|| 2. Keberangkatan ||\n";
cout<<"|| 3. Lihat Daftar Antrian Pesawat ||\n";
cout<<"|| 4. Memberangkatkan Semua Antrian ||\n";
cout<<"|| 5. Exit ||\n";
cout<<"||+++++++++++++++++++++++++++++++++++++++++++||\n";
cout<<endl;
}
//metode linked list
void LinkedList()
{
char pilihMenu;
int ulang = 1;
do
{
menu();
printf("Input Menu : ");
pilihMenu = getche();
printf("\n");
switch(pilihMenu)
{
case '1' :
insertData();
break;
case '2' :
removeData();
break;
case '3' :
tampil();
break;
case '4' :
bersih();
break;
case '5' :
penutup();
break;
default :
{
puts("Input menu salah!\n");
puts("Press any key for back to the menu");
getch();
}
break;
}
}
while(ulang == 1);
}
/*fungsi insialisasi bahwa
head dan tail bernilai NULL*/
void inisialisasi()
{
head = NULL;
tail = NULL;
}
//fungsi untuk memasukkan data
void insertData()
{
int angka;
Node *nodeBaru;
nodeBaru = new Node;
cout<<"Masukkan Data : ";
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("Press any key for back to the menu");
getch();
system("cls");
}
/*untuk hapus elemen belakang
untuk metode LIFO*/
void removeData()
{
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 Diberangkatkan!\n\n", elDel);
}
else
{
puts("Data Kosong! Tidak ada data yang dapat diberangkatkan!\n");
}
puts("Press any key for back to the menu");
getch();
system("cls");
}
//untuk hapus semua elemen
void bersih()
{
Node *clear, *point;
if(tail != NULL)
{
point = head;
while(point != NULL)
{
clear = point;
point = point->next;
delete clear;
}
inisialisasi();
puts("Semua Data Diberangkatkan!\n");
}
else
puts("Data Masih Kosong!\n");
puts("Press any key for back to the menu");
getch();
system("cls");
}
//untuk menampilkan list data
void tampil()
{
Node *see;
see = head;
if(tail != NULL)
{
puts("Daftar Data Antrian Pesawat Konoha Airlines :");
puts("");
while(see != NULL)
{
printf("%i ", see->data);
see = see->next;
}
puts("\n");
}
else
puts("Data masih dalam keadaan kosong!\n");
puts("Press any key for back to the menu");
getch();
system("cls");
}
//fungsi penutup / keluar
void penutup()
{
cout<<"\n\tPROGRAM EXIT"<<endl;
exit(0);
}
- OUTPUT PROGRAM
1. Program pertama dijalankan dan menginput fungsi ( 1. Pendaftaran Pesawat Konoha Airlines )
2. Lalu akan ditampilkan pilihan menu. Jika kita memilih 1 maka program akan meminta untuk memasukan data ( kode pesawat )
3. Jika memilih fungsi 1 pada menu maka program akan memasukan antrian pesawat lagi.
4. Jika memilih fungsi 3 pada pilihan menu maka program akan menampilkan daftar data antrian pesawat.
5. Jika memilih fungsi 2 pada pilihan menu maka antrian akan diberangkatkan urut sesuai daftar antrian
6. Jika memilih 4 pada Pilihan menu maka data antrian pesawat akan diberangkatkan bersama sama.
Itu merupakan program Queue untuk menampilkan data antrian & untuk memberangkatkan antrian pesawa konoha airline.
referensi program:
https://www.esokharinanti.com/2014/04/program-queue-linked-list-pada-antrian.html
0 komentar