1. Susunlah program untuk menginput data dari keyboard terus
menerus hingga stack1 penuh
2. Susunlah program untuk menginput data dari keyboard terus
menerus hingga stack2 penuh
3. Susunlah program untuk menghapus stack1 hingga kosong
4. Susunlah program untuk menghapus stack2 hingga kosong
#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#define MAX 10
#define true 1
#define false 0
using namespace std;
char stack[MAX];
int top1, top2;
void init(void);
void push(char data, int
nomorstack);
char pop(int nomorstack);
void clear(int nomorstack);
int full(void);
int empty(int nomorstack);
void baca();
main(){
char data;
int pilih, nomorstack;
init();
do{
system("cls");
printf("Contoh program
double stack");
printf("\n1. Push");
printf("\n2. Pop");
printf("\n3.
Clear");
printf("\n4. Baca");
printf("\n5.
Selesai…");
printf("\nPilihan
anda : \n");
scanf("%i",&pilih);
switch(pilih){
case 1:
printf("Push\n");
printf("Masukkan datanya
:\n"); scanf("%s",&data);
printf("Mau dimasukkan ke
stack berapa ? 1 atau 2 ? :\n");
scanf("%i",&nomorstack);
push(data, nomorstack);
break;
case 2:
printf("Pop\n");
printf("Masukkan nomor stack\n");
scanf("%i",&nomorstack);
data=pop(nomorstack);
printf("\nData yang
dikeluarkan adalah %s", data);
break;
case 3:
printf("Clear\n");
printf("Nomor Stack yang
akan dikosongkan \n");
scanf("%i",&nomorstack);
clear(nomorstack);
break;
case 4: printf("Baca\n");
baca();
break;
case 5:
printf("Exit");
break;
default: printf("Pilihan
yang anda masukkan tidak ada");
break;
}
}while(pilih!=5);
getch();
}
//init
void init(){
top1=0;
top2=MAX+1;
}
//PUSH
void push(char data, int
nomorstack){
if(full()!=true){
switch(nomorstack){
case 1: top1++;
stack[top1]=data;
break;
case 2: top2--;
stack[top2]=data;
break;
default: printf("\nNomor
stack salah");
break;
}
}
else
printf("\nStack
penuh");
getch();
}
//POP
char pop(int nomorstack){
char data;
if(empty(nomorstack)!=true){
switch(nomorstack){
case 1: data=stack[top1];
top1--;
return data;
break;
case 2: data=stack[top2];
top2++;
return data;
break;
default: printf("\nNomor
stack salah");
break;
}
}
else printf("\nStack
masih kosong");
getch();
return 0;
}
//cek full
int full(void){
if(top1+1>=top2){
return true;
}
else return false;
}
//cek empty
int empty(int nomorstack){
switch(nomorstack){
case 1: if(top1==0) return
true;
else return false;
break;
case 2: if(top2==MAX+1) return
true;
else return false;
break;
default: printf("nomor
stack salah");
break;
}
}
//clearing
void clear(int nomorstack){
switch(nomorstack){
case 1: top1=0;
break;
case 2: top2=MAX+1;
break;
default: printf("Nomor
stack salah");
break;
}
}
void baca(){
int i;
printf("Baca isi stack
pertama \n");
for(i=1; i<=top1; i++){
printf(" %c ",stack[i]);
printf("\n");
}
printf("Isi stack
kedua\n");
for(i=MAX; i>=top2; i--){
printf(" %c ",stack[i]);
printf("\n");
}
getch();
}
Tidak ada komentar:
Posting Komentar