1. a. Buatlah implementasi program stack dan queue dengan studi
kasus masing-masing ? (untuk studi kasus
di harapkan setiap mahasiswa berbeda kalaupun ada yang sama akan berbeda
nilainya berdasarkan pengiriman jawaban yang lebih awal).
b. Jelaskan mengapa implementasi stack dengan array
tidak bermasalah sedangkan implementasi queue dengan array ada sedikit
bermasalah, jelaskan?
2. a. Dengan menggunakan stack
buatlah subprogram untuk
melakukan konversi notasi infix ke notasi postfix, sebagai gambaran
:
·
Input berupa ekspresi aritmatika dalam notasi
infix sebagai berikut : ((A*B) + C/D-E^F)*G
·
Output yg dihasilkan ekspresi aritnaatika dalam
notasi postfix: AB*CD/+EF^-G*
b. Diketahui Queue dinamis Q (implementasi
dengan pointer), yg mempunyai elemen berupa karakter, Buatlah algoritma untuk membalik urutan isi dari queue Q.
·
Input :
queue dinamis Q (yang misal isinya :
A, B, C, D, E)
·
Output :
queue dinamis Q (yang isinya E, D, C,
B, A)
1.
a. Stack (tumpukan) bisa
diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang diletakan
diatas data yang lain.
·
Menu Utama pada program
Stack
·
Push Stack
Operasi
Push adalah Menambah elemen kedalam stack S, dimana penambahan dapat dilakukan
jika stack itu belum penuh. Stack dikatakan penuh Jika posisi atas sudah berada
pada posisi N.
·
Pop
Stack
Pop(s) adalah
menghapus elemen dari stack, dimana elemen yang dihapus adalah elemen yang
terakhir Masuk (LIFO Last In First Out) atau elemen penghapusan, dimana proses
penghapusan dapat dilakukan jika stack tidak dalam keadaan Kosong
Dibawah ini merupakan tampilan ketika data berhasil
dihapus.
·
IsEmpty
Stack
Fungsi yang digunakan untuk mengecek apakah
stack sudah kosong, jika terisi maka akan menampilkan Data terisi.
·
IsFull
Stack
Fungsi yang digunakan
untuk mengecek apakah stack sudah penuh. Dengan cara memeriksa top of stack,
jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil
dari MAX_STACK-1) maka belum full.
Disini dijelaskan bahwa tumpukan data belum terisi penuh atau full.
·
Clear
Stack
Untuk mengosongkan
stack. Stack akan dianggap kosong bila ujung atas stack pada posisi -1
Dibawah ini merupakan Source code dari program diatas.
#include <stdio.h>
#define
MAXSIZE 7
void Push();
void Pop();
void Print();
void Init();
void Clear();
void
IsEmpty();
void IsFull();
int i=0;
int top;
int pilih;
int nilai[7];
struct
Tumpukan{
int atas;
int data[10];
}T;
void main(){
system("COLOR 3B");
Init();
do{
system ("cls");
printf("\n\t\t\t\t\tNama : Alif Purnama
Shidiq\n");
printf("\t\t\t\t\tNIM :
11140910000129\n");
printf("\t\t\t\t\tKelas : TI A\n");
printf("\t\t\t\t\tDosen : Asep Taufik Muharram,
M.Kom\n\n");
printf("\t1.\t
Menambah Tumpukan Batu Bata\n");
printf("\t2.\t Menghilangkan Tumpukan Batu Bata\n");
printf("\t3.\t Menampilkan Data Batu Bata\n");
printf("\t4.\t Mengecek Apakah Tumpukan Batu Bata Tersebut Sudah
Kosong\n");
printf("\t5.\t Mengecek Apakah Tumpukan Batu Bata Tersebut Sudah
Penuh\n");
printf("\t6.\t Menghapus Tumpukan Batu Bata\n");
printf("\n\n\tMasukkan Menu yang Anda Pilih : ");
scanf("%d",&pilih);
printf ("\n");
printf ("Tekan ENTER untuk Melanjutkan\n");
getche ();
switch(pilih){
case 1: Push();
break;
case 2: Pop();
break;
case 3: Print();
break;
case 4: IsEmpty();
break;
case 5: IsFull();
break;
case 6: Clear();
break;
}
system("cls");
}while(top<=7);
}
void Init(){
T.atas = -1;
}
void Push(){
int num;
if(T.atas == (MAXSIZE-1)){
printf("\n\n\tTumpukan Bata Sudah Penuh");
getche();
}else{
printf("\n\n\tBata Ke- : ");
scanf("%d",&num);
T.atas = T.atas +1;
T.data[T.atas] = num;
}
}
void Pop(){
int num;
if(T.atas == -1){
printf("\n\n\tTumpukan Bata Sudah
Kosong");
getche();
return;
}else{
num = T.data[T.atas];
printf("\n\n\tBata yang Dihapus adalah Bata dengan nilai
%d",T.data[T.atas]);
T.atas = T.atas-1;
}
getche();
}
void Print(){
int i;
if(T.atas == -1){
printf("\n\n\tTumpukan Bata Tidak
Terisi");
}
else{
for(i=T.atas;
i>=0;i--){
printf("\n\n\tTampilkan Urutan Bata : %d
",T.data[i]);
}
}
getche();
void IsFull(){
if(T.atas == (MAXSIZE-1)){
printf("\n\n\tBata Sudah Penuh");
}else{
printf("\n\n\tTumpukan Bata Belum Penuh");
}
getche();
}
void
IsEmpty(){
if(T.atas == -1){
printf("\n\n\tTidak Ada
Bata");
}else{
printf("\n\n\tTerisi Bata");
}
getche();
}
void Clear(){
do{
T.atas-=1;
}while(T.atas!=-1);
printf("\n\n\tSemua Bata Telah Terhapus");
getche();
}
Untuk Link download File lengkap dan Program ada dibawah ini.
DOWNLOAD