Tujuan :
1. Mahasiswa mampu memahami tipe data stack
2. Mahasiswa mampu membuat program insert data pada stack
Peralatan Pendukung :
1. Modul Praktikum (Cetak)
2. Aplikasi Dev c++
1. Teori Dasar
Stack merupakan sebuah kumpulan data yang diletakkan di atas data lainya, seperti sebuah
tumpukan. Dengan demikian, stack merupakan salah satu struktur data yang menerapkan
prinsip LIFO (Last In First Out). Dimana elemen yang terakhir disimpan dalam stack, menjadi
elemen yang pertama diambil. Untuk meletakkan sebuah elemen pada bagian atas dari
stack, maka dilakukan operasi push. Sedangkan untuk memindahkan sebuah elemen dari
tempat atas tersebut dalam sebuah stack, maka dilakukan operasi pop.
Hal | 147
Clear
Fungsi yang digunakan untuk mengosongkan stack dengan cara mengeset Top dengan -
1. Jika Top bernilai kurang dari nol maka stack dianggap kosong.
2. Praktikum
Praktikum 1 : Stack Dengan Menggunakan Array dan Struct
#include <iostream>
#include <stdlib.h> // menggunakan system("cls")
#include <conio.h> // menggunakan getch()
#define MAX 10 // batas stack yang ingin dibuat, boleh lebih
using namespace std;
int top=-1, Stack[MAX];
void push(){
if(top == MAX-1){
cout << ">> Stack sudah Penuh !" << endl;
}else{
top++;
cout << ">> Masukan Data : ";
cin >> Stack[top];
cout << "Pada Index ke " << top << " ";
cout << "Data [" << Stack[top] << "] Telah Ditambah ! " << endl;
}
}
void pop(){
if(top == -1){
cout << ">> Stack Kosong !" << endl;
}else{
cout << "Data [" << Stack[top] << "] pada index ke " << top << "
dalam Stack Diambil !" << endl;
Stack[top--];
}
}
int clearr(){
return top = -1;
}
void Print(){
if (top == -1) {
cout << " Stack : ";
cout << "\n===========================" << endl;
cout << "Empty ! \n===========================" << endl;
}
else {
cout << "Stack : ";
cout << "\n===========================" << endl;
for (int i = top; i >= 0; i--){
cout << " XXXXX[ " << Stack[i] << " ]XXXXX" << endl;
}
cout << "===========================" << endl;
}
}
int main()
{
int choose;
do {
Print();
cout << "\n1. Push"
<< "\n2. Pop"
Hal | 148
<< "\n3. Clear"
<< "\n4. Exit"
<< "\nCodeProgram ismynr.xyz"
<< "\nPergerakan ( TOP ) : " << top
<< "\n\n>> Choose : "; cin >> choose;
switch (choose){
case 1:
push();getch();
break;
case 2:
pop();getch();
break;
case 3:
clearr();
cout << "\nClear Succes" << endl;
getch();
break;
case 4:
cout << "Terima Kasih telah menggunakan program ini :)" <<
endl;
getch();
break;
default:
cout << "Pilihan tidak ada\nMasukan pilihan sesuai dengan
daftar" << endl;
getch();
break;
}
system("cls");
}while(choose !=4);
}
struct Stack{
node *TOS;
};
node *baru;
void awal()
{
puts("===================================================");
puts("= PROGRAM STACK DENGAN LINKED LIST =");
puts("===================================================\n");
}
Hal | 149
void allocate_node(ItemType x)
{
baru = (node *) malloc (sizeof(node));
if(baru==NULL)
{
printf("Alokasi Gagal\n");
exit(1);
}
else
{
baru->item=x;
baru->next=NULL;
}
}
Hal | 150
int main()
{
int pilih, data;
char lagi='y';
Stack ujung;
inisialisasi(&ujung);
while(lagi=='y')
{
system("CLS");
awal();
//tampil(&ujung);
printf("Menu Pilihan : \n");
printf("1. Push\n");
printf("2. Pop\n");
printf("3. Tampilkan Stack\n");
printf("\nPilih No : ");
scanf("%d", &pilih);
switch(pilih)
{
case 1:
printf("Masukkan data : ");
scanf("%d", &data);
allocate_node(data);
push(&ujung);
break;
case 2:
pop(&ujung);
break;
case 3:
tampil(&ujung);
break;
}
fflush(stdin);
printf("Lagi (y/t) ? ");
scanf("%c", &lagi);
}
}
Analisa Program Praktikum 2
Apakah memungkinkan kita membuat struktur data Stack dengan menggunakan Single Linked List
Circular? Berikan penjelasan jawaban Anda
6. Tugas
Buatlah program untuk kasus diatas (Menara Hanoi) dimana jumlah lempengannya bisa di inputkan
user.
Hal | 151