#include <iostream>
#include <conio.h>
#include <stdlib.h>
#define max 10
using namespace std;
struct queue
{
int head;
int tail;
int data[max];
int kumpul;
};
queue antri;
void awal()
{
antri.head=-1;
antri.tail=-1;
}
int kosong() //variable untuk memastikan bahwa data masih kosong atau tidak
{
if (antri.tail==-1)
{
antri.head=-1;
return 1;
}
else
return 0;
}
int penuh() //variable untuk memastikan bahwa data data sudah penuh atau tidak
{
if (antri.tail==max-1)
return 1;
else
return 0;
}
void input(int data) //untuk memasukkan data
{
if(kosong()==1)
{
antri.head=0;
antri.tail++;
antri.data[antri.tail]=data;
cout<<"data telah dimasukkan";
}
else if(penuh()==0)
{
antri.head=0;
antri.tail++;
antri.data[antri.tail]=data;
cout<<"data telah dimasukkan";
}
else
cout<<"data telah penuh";
}
void ambil() //untuk mengambil data yang telah diinputkan
{
if(kosong()==0)
{
cout<<"data yang terambil "<<antri.data[antri.head];
for (int a=antri.head;a<=antri.tail;a++)
antri.data[a]=antri.data[a+1];
antri.tail--;
}
else
cout<<"Data telah kosong";
}
void tampil() //untuk menampilkan data yang di inputkan berupa ascending
{
int b;
for (int a=0;a<=antri.tail;a++)
{
antri.kumpul=antri.data[a];
b=a-1;
while(antri.data[b]>antri.kumpul && b>=0)
{
antri.data[b+1]=antri.data[b];
b--;
}
antri.data[b+1]=antri.kumpul;
}
for(int a=0;a<=antri.tail;a++)
{
cout<<antri.data[a]<<" ";
}
if(kosong()==0)
{
cout<<endl;
for (int a=0;a<=antri.tail;a++)
{
cout<<"\nIndex ke "<<a<<"="<<antri.data[a];
}
}
else
cout<<"\nData telah kosong";
}
void bersih() //untuk membersihkan atau menghapus data yang telah di inputkan
{
antri.head=antri.tail=-1;
cout<<"\nData telah kosong!";
}
int main(){
int pilihan,data;
awal();
do
{
cout<<"\t\tPROGRAM QUEUE\nMenu :\n1. Input (Enqueue) \n2. Ambil Data (Dequeue) \n3. Tampil\n4. Bersihkan (CLEAR)\n5. Keluar\nMasukkan pilihan :";
cin>>pilihan;
switch(pilihan)
{
case 1:cout<<"\nMasukkan data = ";cin>>data;
input(data);
break;
case 2:ambil();
break;
case 3:tampil();
break;
case 4:bersih();
break;
}
getch();
system("cls"); }
while(pilihan!=5);
}
soal3
#include <iostream>
#include <sstream>
#include <stack>
#include <limits>
#include <string>
#include <conio.h>
using namespace std;
int operasi(char a)
{
int temp;
if (a == '^')
temp = 1;
else if (a == '*' || a == '/')
temp = 2;
else if (a == '+' || a == '-')
temp = 3;
return temp;
}
int main()
{
string infix;
cout<<"\t\t\t\t\t\t\Infix Ke Postfix\n\n";
cout<<"Masukkan nilai yang akan dikonversi\n";
cout<<"contoh 1*2+3/4\n\n";
cout << "Masukan Infix: ";
getline(cin, infix);
stack<char> opr_stack;
stringstream postfix;
for (unsigned a = 0; a < infix.length(); a++)
{
if (infix[a] == '+' || infix[a] == '-' || infix[a] == '*' || infix[a] == '/' || infix[a] == '^')
{
while (!opr_stack.empty() && operasi(opr_stack.top()) <= operasi(infix[a]))
{
postfix << opr_stack.top();
opr_stack.pop();
}
opr_stack.push(infix[a]);
}
else if (infix[a] == '(')
{
opr_stack.push(infix[a]);
}
else if (infix[a] == ')')
{
while (opr_stack.top() != '(')
{
postfix << opr_stack.top();
opr_stack.pop();
}
opr_stack.pop();
}
else
{
postfix << infix[a];
}
}
while (!opr_stack.empty())
{
postfix << opr_stack.top();
opr_stack.pop();
}
cout << "Hasil Postfix : " << postfix.str() << endl;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
return 0;
getch();
}