- Membuat program QUEUE dengan ketentuan :
- Memiliki fungsi PUSH/ENQUEUE (input data)
- Memiliki fungsi POP/DEQUEUE (ambil satu data)
- Memiliki fungsi CLEAR (delete all data)
- Memiliki fungsi PRINT (cetak data pada layar)
- (opsional) jika user ingin menampilkan data yang diinputkan, maka data tersebut telah terurut secara ascending (menggunakan metode sorting yang sudah dipelajari di kelas)
Code :
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include <stdlib.h>
using namespace std;
struct queue
{
int data[5];
int pala,ekor;
};
queue antri;
int main()
{
int pil, baru, i ,j ,k ,pil2,joss[5],simpan;
antri.ekor=antri.pala=-1;
do
{
system("cls");
cout<<"1. PUSH DATA"<<endl;
cout<<"2. POP DATA"<<endl;
cout<<"3. CLEAR DATA"<<endl;
cout<<"4. PRINT DATA"<<endl<<endl;
cout<<"MASUKKAN PILIHAN : ";
cin>>pil;
switch (pil)
{
case 1 :
if(antri.ekor==5-1)
{
cout<<"ANTRIAN PENUH";
getch();
}
else
{
cout<<"MASUKKAN DATA : ";
cin>>baru;
antri.ekor++;
antri.data[antri.ekor]=baru;
}
break;
case 2 :
if(antri.ekor==-1)
{
cout<<"ANTRIAN KOSONG";
getch();
}
else
{
cout<<"DATA YANG AKAN DI POP = "<<antri.data[0]<<endl;
for(k=antri.pala;k<=antri.ekor-1;k++)
{
antri.data[k]=antri.data[k+1];
}
antri.ekor--;
getch();
}
break;
case 3 :
{
antri.ekor=antri.pala=-1;
cout<<"SEMUA DATA TERHAPUS";
getch();
}
break;
case 4 :
cout<<"Ingin sort apa? (1.asc/2.desc/3.original)";cin>>pil2;
for(i=antri.ekor; i>=0; i--)
{
joss[i]=antri.data[i];
}
getch();
for(int a=0;a<5;a++)
{
simpan=joss[a];
int b=a-1;
for(;joss[b]>simpan && b>=0;b--)
{
joss[b+1]=joss[b];
}
joss[b+1]=simpan;
}
if(antri.ekor==-1)
{
cout<<"ANTRIAN KOSONG";
getch();
}
else if(pil2==3)
{
cout<<"DATA - "<<endl;
for(i=antri.ekor; i>=0; i--)
{
cout<<antri.data[i]<<ends;
}
getch();
}
else if(pil2==1)
{
cout<<"DATA - "<<endl;
for(i=0; i<=antri.ekor; i++)
{
cout<<joss[i]<<ends;
}
getch();
}
else if(pil2==2)
{
cout<<"DATA - "<<endl;
for(i=antri.ekor; i>=0; i--)
{
cout<<joss[i]<<ends;
}
getch();
}
break;
default :
cout<<"TIDAK ADA DALAM PILIHAN";
break;
}
}
while((pil>=1) && (pil<=4));
getch();
}
ScreenShot :
- Buatlah program untuk mengkonversi inputan infix menjadi postfix, program tersebut akan menghasilkan output berupa hasil konversi ke postfix dan hasil perhitungannya. (inputan berupa angka). Code program berikut dapat dijadikan sebagai referensi. (Code program ini dapat menghitung hasil operasi dari inputan postfix).
Code :
#include <iostream>
#include <sstream>
#include <stack>
#include <limits>
#include <string>
#include <conio.h>
using namespace std;
int priority(char a) {
int temp;
if (a == '^')
temp = 1;
else if (a == '*' || a == '/')
temp = 2;
else if (a == '+' || a == '-')
temp = 3;
return temp;
}
bool isOperator(char ch)
{
if (ch=='+' || ch=='-' || ch=='*' || ch=='/')
return true;
else
return false;
}
int main() {
string infix;
cout << "Masukan Infix : ";
getline(cin, infix);
stack<char> opr_stack;
stringstream postfix;
for (unsigned i = 0; i < infix.length(); i++) {
if (infix[i] == '+' || infix[i] == '-' || infix[i] == '*' || infix[i] == '/' || infix[i] == '^') {
while (!opr_stack.empty() && priority(opr_stack.top())<=priority(infix[i])) {
postfix << opr_stack.top();
opr_stack.pop();
}
opr_stack.push(infix[i]);
}
else {
postfix << infix[i];
}
}
while(!opr_stack.empty()) {
postfix << opr_stack.top();
opr_stack.pop();
}
cout << "Postfix \t: " << postfix.str() << endl;//cetak postfix
getch();
return 0;
}
Screenshot :
Kamis, 16 Maret 2017
STACK dan QUEUE
Langganan:
Komentar (Atom)