Anda di halaman 1dari 31

LAPORAN PRAKTIKUM IV

STACK
Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data
Dibimbing oleh Bapak Utomo Pujianto

Oleh :
Anidia Wulan Sari

(150533601651)

Dimas Galih Ramadhan

(150533600571)

S1 PTI15 OFF A

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA
Maret 2016

MODUL IV
STACK
1. TUJUAN
1. Memahami terminologi yang terkait dengan struktur data stack.
2. Memahami operasi-operasi yang ada dalam stack.
3. Dapat mengidentifikasi permasalahan-permasalahan pemrograman yang harus
diselesaikan dengan menggunakan stack, sekaligus menyelesaikannya.

2. DASAR TEORI
1. Pengertian Stack
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.

2. Operasi Dasar Pada Stack

Create
Merupakan operator yang berfungsi untuk membuat sebuah stack kosong.

IsEmpty

Merupakan operator yang berfungsi untuk menentukan apakah suatu stack


merupakan stack kosong. Tanda bahwa sebuah stack kosong adalah Top bernilai
kurang dari nol (-1).

IsFull
Merupakan operator yang digunakan untuk memeriksa apakah stack yang
ada sudah penuh. Stack akan penuh jika puncak stack terletak tepat dibawah
jumlah maksimum yang dapat ditampung stack (Top = MAX_STACK-1).

Push
Merupakan operator yang berfungsi untuk menambahkan satu elemen ke
dalam stack dan tidak dapat dilakukan jika stack dalam keadaan penuh.

Pop
Merupakan operator yang berfungsi untuk mengeluarkan satu elemen
teratas dari dalam stack dengan syarat stack tidak dalam kondisi kosong.

Clear
Fungsi yang digunakan untuk mengosongkan stack dengan cara mengeset
Top dengan -1. Jika Top bernilai kurang dari nol maka stack dianggap kosong.

Retrieve
Fungsi yang digunakan untuk melihat nilai yang berada pada posisi
tumpukan teratas.

3. Pointer Sebagai Penunjuk Stack


Selain menggunakan indeks, untuk menunjuk sebuah Top atau posisi teratas dari
stack, dapat juga digunakan pointer sebagai berikut.

Membuat Stack Dengan Pointer

Proses Push

Proses Pop

4. Representasi Proses Stack


Stack adalah salah satu dari contoh struktur data yang terdiri dari satu collection,
yang juga menerapkan prinsip LIFO. Bila stack tersebut menggunakan array satu
dimensi, maka stack tersebut dapat diilustrasikan sebagai berikut :

Pada gambar 4.2 diatas diilustrasikan ada sebuah indeks array yang masih kosong
pada awal pembuatan stcak dimana n[10], variabel Top berada pada -1 yang
menunjukkan indeks masih dalam keadaan kosong.

Pada gambar 4.3 adalah keadaan ketika stack sudah diisi data. Pada kondisi ini data
pertama yang diinputkan adalah S[0]=11, data kedua S[1]=7, data ketiga S[2]=15, data
keempat S[23]=23. Kondisi Top sudah berubah menjadi data yang terakhir diinputkan
(data keempat) sehingga Top[3] X=23.
Variabel Top digunakan sebagai indeks untuk menunjuk nomor elemen array yang
berisi nilai stack yang berada paling kanan atau Top, yang ditunjukan dengan angka 3.
Variabel X bertipe integer digunakan sebagai perantara, dimana data yang akan
disimpan kedalam stack harus berasal dari X. Demikian juga data yang baru diambil
dari dalam stack harus diterima terlebih dahulu oleh variabel X, kemudian baru
diberikan ke variabel lain untuk diolah.
Oleh karena itu, jika ada instruksi PUSH, maka data baru (yang diambil dari isi
variabel X) akan disimpan dalam elemen S[4] sehingga indeks Top harus diarahkan ke
posisi no.4. Artinya, Top maju terlebih dahulu satu langkah ke S[4], kemudian baru
mengisi nilai pada S[4]. Sedangkan jika ada instruksi Pop, maka yang akan diambil
adalah isi dari S[3] dan datanya akan disimpan terlebih dahulu dalam variabel X,
kemudian indeks Top menjadi mundur satu langkah sehingga akan menunjuk S[2].

5. Double Stack
Double Stack atau Stack Ganda adalah dua stack yang berada dalam satu array.
Satu array digunakan untuk dua stack dimana dasar Stack1 berada pada sisi indeks
yang
terkecil dan dasar Stack2 berada pada sisi indeks yang terbesar. Sama halnya dengan
Single Stack, Double Stack juga menerapkan prinsip LIFO (Last in Firt Out).

Pada gambar 4.4 diatas adalah ilustrasi indeks array pada double stack. Padastack 1
kondisi data pertama yang diinputkan adalah S[0], data kedua S[1], data ketiga S[2]
dan Top=data input terakhir S[2]. Sedangkan pada stack 2 data pertama adalah S[9],
data kedua S[8], data ketiga S[7], data keempat S[6] dan Top=data input terakhir S[6].

6. Operasi Dasar Pada Double Stack

Inisialisasi
Proses awal adalah proses menyiapkan indeks petunjuk stack untuk pertama
kali. Pada tahap ini ditetapkan Top1=-1 (sama seperti single stack) dan
Top2=banyak jumlah data.

Is Empty
Sama dengan single stack, yaitu proses pengecekan stack dalam kondisi kosong

Is Full
Sama dengan single stack, yaitu proses pengecekan stack dalam kondisi kosong

Push (Stack1 dan Stack2)


Proses mengisi data pada stack1 maupun 2

Pop (Stack1 dan Stack2)


Proses mengambil data pada stack1 maupun 2

3. Latihan Praktikum
Latihan Praktikum 1
Pemrograman C++
Nama Program

: Single Stack

Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script program

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define maxstack 4
using namespace std;
struct STACK { //Membuat jenis data abstrak 'STACK'
int top;
float data[4];
};
float dta;
struct STACK stackbaru;
void inisialisasi()
{
stackbaru.top=-1;
}
bool isfull()
{
if(stackbaru.top==maxstack)
return true;
else
return false;
}
bool isempty()
{
if(stackbaru.top==1)
return true;
else
return false;
}
void push(float dta)
{
if(isfull()==true)
{
puts("Maaf, stack penuh");
getch();
}
else
{
stackbaru.top++;
stackbaru.data[stackbaru.top]=dta;
}
}

void pop()
{
if(isempty()==true)
{
cout<<"Data telah kosong!";
getch();
}
else
{
cout<<"Data
yang
terambil
"<<stackbaru.data[stackbaru.top]<<endl;
stackbaru.top--;
getch();
}
}

adalah

void print()
{
for(int i=0;i<=stackbaru.top;i++)
{cout<<stackbaru.data[i]<<" ";}
}
void clear()
{
stackbaru.top=-1;
}
int main()
{
inisialisasi();
char menu;
char uulang;
do{
system("cls");
printf("\t ---------------------\n");
printf("\t |
STACK
|\n");
printf("\t ---------------------\n");
printf("\n\ --> Menu STACK :\n\n");
puts("1. push stack");
puts("2. pop stack");
puts("3. cetak");
puts("4. bersihkan stack");
puts("5. exit");
cout<<"Menu pilihan anda: ";
cin>>menu;
if(menu=='2')
{
pop();
uulang='y';
}
else if(menu=='1')
{

data

ke:

cout<<"data yang akan disimpan di stack: ";


cin>>dta;
push(dta);
uulang='y';
}
else if(menu=='3')
{
print();
cout<<"\nUlang?(y/t) ";
cin>>uulang;
}
else if(menu=='4')
{
clear();
cout<<"\nUlang?(y/t) ";
cin>>uulang;
}
else if(menu=='5')
{
exit(0);
}
}
while(uulang=='Y' || uulang=='y');
}

Output Program

Algoritma
1.
2.
3.
4.

:
Mulai.
Membaca file header.
Membaca fungsi struct STACK.
Membaca tipe data integer top, float data yang berisikan array dengan

elemen berjumlah 4 (float data [4]).


5. Membaca tipe data float dta.
6. Membaca fungsi struct STACK stackbaru.
7. Membaca fungsi inisialisasi.
8. Membaca fungsi bool isfull.
9. Membaca fungsi bool isempty.
10. Membaca fungsi push(float dta)
11. Membaca fungsi pop.
12. Membaca fungsi print ( untuk mencetak data ).
13. Membaca fungsi clear (untuk menghapus/ mengosongkan data).
14. Membaca fungsi utama.
15. Pemanggilan fungsi inisialisasi.
16. Membaca tipe data charr menu dan uulang.
17. Membaca pemanggilan percabangan do-while, yand didalamnya terdapat
pilihan menu dengan menggunakan perulangan if else.
18. Jika 1 maka pemanggilan fungsi pop dan uulang berfungsi.
19. Jika 2 maka fungsi push dan uulang, serta inputan data yang akan disimpan.
20. Jika 3 maka fungsi print dan uulang.
21. Jika 4 maka fungsi clear dan uulang.
22. Jika 5 maka fungsi exit (keluar).
23. Cetak hasil.
24. Selesai.

Diskripsi

:
Pada program ini menggunakan 4 file header. Penggunaan logika Boolean

pada fungsi pop dan push harus benar , jika tidak maka program saat dijalankan
akan error(outputnya tidak akan keluar dengan benar/ sesuai dengan yang
ditargetkan). Penulisan fungsi pop dan push perlu diperhatikan. Untuk menjalankan
setiap menu yang disediakan menggunakan percabangan do- while dengan
perulangan if else. Menu 1 apabila memilih pop maka fungsi pop akan berfungsi
mulai menjalankan logika Boolean yang ada pada deklarasi fungsi pop. Jika benar
maka data telah kosong jika salah maka data yang terambil diambl dengan
pembacaan fungsi stackbaru.data[stackbaru.top]. Menu 2 apabila memilih menu
push, maka fungsi push akan berfungsi, jika logika Boolean benar maka stack,

penuh

jika

tidak

maka

akan

berfungsi

stackbaru.top++;

stackbaru.data[stackbaru.top]=dta;.

Latihan Praktikum 2
Pemrograman C++
Nama Program

: Double Stack

Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script program

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define MAX 10
#define true 1
#define false 0
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();
int 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. Cetak Data");
printf("\n5. Selesai");
printf("\nPilihan anda: ");
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);
printf("\nData yang akan dikeluarkan adalah
%s", &data);
pop(nomorstack);
getch();
break;
case 3:
printf("Clear\n");
printf("Nomor
stack

yang

akan

dikosongkan\n");
scanf("%s", &nomorstack);
clear(nomorstack);
break;
case 4:
printf("Cetak Data:\n\n");
baca();
break;
case 5:
printf("Exit");
break;
default:
printf("Pilihan

yang

ada");
break;
}
}
while(pilih!=5);
getch();
}
void init()
{
top1=-1;
top2=MAX+1;
}
void push(char data, int nomorstack)

anda

masukkan

tidak

{
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();
}
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;

}
int full(void)
{
if(top2-top1==1){
return true;
}
else
return false;
}
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;
}
}
void clear(int nomorstack)
{
switch(nomorstack)
{
case 1:
top1=1;
break;
case 2:
top2=MAX;
break;
default:
printf("Nomor stack salah");
break;
}
}
void baca()
{
int i;
printf("Cetak isi stack pertama:\n");

for(i=0;i<=top1;i++)
{
printf("%c", stack[i]);
printf("\n");
}
printf("Cetak isi stack kedua:\n");
for(i=MAX; i>=top2; i--)
{
printf("%c",stack[i]);
printf("\n");
}
getch();
}

Output Program

Algoritma

1. Mulai.
2. Membaca file header.
3. Membaca fungsi utama.
4. Membaca fungsi push
5. Membaca fungsi pop.
6. Membaca fungsi clear
7. Membaca fungsi print ( untuk mencetak data ).
8. Menampilkan Menu program double stack
9. Membaca tipe data charr menu dan uulang.
10. Membaca pemanggilan percabangan do-while, yand didalamnya terdapat
pilihan menu dengan menggunakan perulangan if else.
11. Jika 1 maka fungsi push dan uulang, serta inputan data yang akan disimpan.
12. Jika 2 maka pemanggilan fungsi pop dan uulang berfungsi.
13. Jika 3 maka fungsi clear dan uulang.
14. Jika 4 maka fungsi print dan uulang.
15. Jika 5 maka fungsi exit (keluar).
16. Cetak hasil.
17. Selesai.

Diskripsi

:
Pada program ini menggunakan 3 file header. Penggunaan logika pada

fungsi pop dan push harus benar , jika tidak maka program saat dijalankan akan
error(outputnya tidak akan keluar dengan benar/ sesuai dengan yang ditargetkan).
Penulisan fungsi pop dan push perlu diperhatikan. Untuk menjalankan setiap menu
yang disediakan menggunakan percabangan Menu 2 apabila memilih pop maka
fungsi pop akan berfungsi mulai menjalankan logika yang ada pada deklarasi
fungsi pop. Menu 1 apabila memilih menu push, maka fungsi push akan berfungsi,
jika logika benar .

Latihan Praktikum 3
Pemrograman C++
Nama Program

: Program pembalik kata dengan stack

Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script program

#include <stdio.h>
#include <conio.h>
#include <iostream>

#include <string.h>
#include <stdlib.h>
#define MAX 75
#define true 1
#define false 0
char stack[MAX];
int top;
void init(void);
int full(void);
int empty(void);
char pop(void);
void clear(void);
void push(char info);
main()
{
char pilih;
char kal[75];
int k,p;
printf("-*PROGRAM

MEMBALIK

KATA

DENGAN

STACK

-*-\n\n");
init();
do
{
printf(" ======================\n");
printf(" ||
MENU PILIHAN
||\n");
printf(" ======================\n");
printf(" ||[1] Masukan Kata ||\n");
printf(" ||[2] Balik Kata
||\n");
printf(" ||[3] Selesai
||\n");
printf(" ======================\n");
printf(" Pilihan: ");
scanf("%s",&pilih);
system("cls");
switch(pilih)
{
case '1':
printf("\nMasukkan data: ");
scanf("%s",&kal);
p=strlen(kal);
for(k=0;k<=p;k++)
push(kal[k]);
printf("\nKata yang masuk: ");
for(k=0;k<=p;k++)
printf("%c", stack[k]);
printf("\n");
break;
case '2':
if(empty()!=true)
{
printf("\nKata setelah dibalik: ");

for(k=top;k>=0;k--)
printf("%c", pop());
printf("\n");
}
else printf("\nStack kosong!!\n");
break;
case '3':
break;
default:
printf("\nPilihan anda salah!!\n");
}
printf("\n");
}
while(pilih!='3');
}
void init(void)
{
top=0;
}
void push(char info)
{
if(full()!=true)
{
top++;
stack[top]=info;
}
else
printf("\nStack overlow...\n");
}
char pop(void)
{
char info;
if(empty()!=true)
{
info=stack[top];
top--;
return(info);
}
else
printf("\nStack underflow...\n");
}
int full(void)
{
if(top==MAX)
return(true);
else
return(false);

}
int empty(void)
{
if(top==0)
return(true);
else
return(false);
}

Output Program

Algoritma

1. Mulai.
2. Membaca file header.
3. Membaca tipe data char stack[max] .
4. Membaca fungsi utama
5. Mencetak Menu dari program membalik kata denagn stack
6. Membaca pemanggilan percabangan
7. Jika 1 maka masuk pada case 1 masukkan kata
8. Jika 2 maka masuk pada case 2 balik kata
9. Jika 3 maka exit (keluar).
10. Cetak hasil.
11. Selesai.

Diskripsi

:
Program diatas merupaka program yang berfungsi membalikkan kalimat

dengan memanfaatkan fungsi- fungsi dalam stack. Penggunaan fungsi operasioperasi dasar dari stack , kemudia penggunaan tipe data char stack[MAX] yang

berfungsi menampung kalimat yang akan dibalik sebanyak 75 elemen yang


tersedia. Kemudian Penggunaan fungsi perulangan for yang digunakan untuk
membalikkan kata , yaitu :
for(k=0;k<=p;k++)
printf("%c", stack[k]);

4. Tugas Rumah
Tugas Rumah
Pemrograman C++
Nama Program

: Program Penyimpanan Data Mahasiswa

Bahasa Pemrogramam

: C++

Compiler

: MinGW Developer Studio

Script program

#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;

struct

mahasiswa{char

data_nilai;};
void tmbh_mhs();
void push(mahasiswa);
void init();
bool isFull();
bool isEmpty();
void sorting(int);
void baca_mhs();
mahasiswa pop();
void baca_sorting();

nim[50];

char

nama[50];int

int flag = -1;


const int MAX = 10;
mahasiswa db_mhs[MAX];
int main()
{
system("cls");
char inputan;
cout << "\t+++++++++++++ Program stack mahasiswa ++++++++
+++++\n";
cout << endl << endl;
cout << "\tJumlah stack : " << flag+1 << "

Batas

Maksimum : " << MAX;


cout << endl << endl;
cout

<<

"\t+------------------

MENU

UTAMA

-----------------+\n";
cout

<<

"\t|

NO

PILIHAN

|\n";
cout

<<

"\t+----

+-------------------------------------------+\n";
cout << "\t| 1

Tambahkan data mahasiswa (Push Stack)

|\n";
cout << "\t| 2

Tampilkan data mahasiswa (Pop stack)

|\n";
cout << "\t| 3

Tampilkan data dan sorting (Pop

sorting) |\n";
cout

<<

+-------------------------------------------+\n";
cout << "\tPilih menu : ";cin >> inputan;
switch(inputan) {
case '1' :
tmbh_mhs();
break;
case '2' :
baca_mhs();
break;
case '3' :
baca_sorting();
break;
}

"\t+----

}
void push(mahasiswa mhs) {
flag++;
db_mhs[flag] = mhs;
cout << db_mhs[flag].nim;
}
void tmbh_mhs() {
int ipt;
mahasiswa mhs;
system("cls");
cout << "\t+++++++++++++Tambah Mahasiswa Menu (Push Menu)
+++++++++++++\n";
cout << endl << endl;
cout

<<

"\tMasukkan

jumlah

data

";cin

>>

ipt;cout<<endl;
for(int i = 0;i < ipt;i++)

if(!isFull()) {
cout << "\tMahasiswa ke : " << i+1 << endl;
cout << "\tMasukkan NIM : ";cin >> mhs.nim;
cout << "\tMasukkan Nama : ";cin >> mhs.nama;
cout

<<

"\tMasukkan

Nilai

";cin

>>

mhs.data_nilai;
push(mhs);
cout << "\tData telah di push " << endl << endl;
}
else {
cout << "\tData penuh."<<endl;
break;
}
}
system("pause");
system("cls");
main();
}
bool isEmpty() {
if(flag == -1) return true;
else return false;
}
bool isFull() {
if(flag == MAX-1) return true;
else return false;

}
mahasiswa pop() {
return db_mhs[flag--];
}

void baca_mhs() {
int ipt;
mahasiswa mhs;
system("cls");
cout << "\t+++++++++++++Baca Mahasiswa Menu (Pop menu)+++
++++++++++\n";
cout << endl << endl;
if(isEmpty())

cout << "Data kosong\n";


system("pause");
main();
}
cout << "\tMasukkan jumlah data yang dikeluarkan : ";cin
>> ipt;cout<<endl;
if(ipt <= flag+1) {
cout

<<

"\t+---------------+----------------

+-----------------+\n";
cout << "\t| Nim Mahasiswa | Nama Mahasiswa | Nilai
Mahasiswa |\n";
cout

<<

"\t+---------------+----------------

+-----------------+\n";
for(int i = 0;i < ipt;i++)

if(!isEmpty()) {
mhs = pop();
cout << "\t " << mhs.nim << " \t\t
mhs.nama << " \t\t

" <<

" << mhs.data_nilai << endl << endl;


cout << "\t Data telah di pop " << endl <<

endl;
cout
"\t----------------------------------------------------\n";
}
else {
cout << "\tData kosong."<<endl;
break;
}

<<

}
}
else {
cout << "Data tidak sebanyak itu\n";
}
system("pause");
main();
}
void sorting(int jml) {
int j;
int temp;
char temp_i[2][50];
for(int i=0; i<jml; i++) {
temp = db_mhs[i].data_nilai;
strcpy(temp_i[0],db_mhs[i].nim);
strcpy(temp_i[1],db_mhs[i].nama);
j = i-1;
while (db_mhs[j].data_nilai>temp && j>=0) {
db_mhs[j+1].data_nilai = db_mhs[j].data_nilai;
strcpy(db_mhs[j+1].nama,db_mhs[j].nama);
strcpy(db_mhs[j+1].nim,db_mhs[j].nim);
j--;
}
db_mhs[j+1].data_nilai = temp;
strcpy(db_mhs[j+1].nim,temp_i[0]);
strcpy(db_mhs[j+1].nama,temp_i[1]);
}
}
void baca_sorting() {
int ipt;
mahasiswa mhs;
system("cls");
cout << "\t+++++++++++++Baca Mahasiswa Sorting Menu (Pop
menu)+++++++++++++\n";
cout << endl << endl;
if(isEmpty())

cout << "Data kosong\n";


system("pause");
main();
}

cout << "\tMasukkan jumlah data yang dikeluarkan : ";cin


>> ipt;cout<<endl;
if(ipt <= flag+1) {
cout << "Sebelum sorting : \n\n";
cout

<<

"\t+---------------+----------------

+-----------------+\n";
cout << "\t| Nim Mahasiswa | Nama Mahasiswa | Nilai
Mahasiswa |\n";
cout

<<

"\t+---------------+----------------

+-----------------+\n";
for(int i = ipt;i >= 0;i--)

if(!isEmpty()) {
mhs = db_mhs[i];
cout << "\t " << mhs.nim << " \t\t
mhs.nama << " \t\t

" <<

" << mhs.data_nilai << endl << endl;


cout << "\t Data tidak di pop " << endl <<

endl;
cout

<<

"\t----------------------------------------------------\n";
}
else {
cout << "\tData kosong."<<endl;
break;
}
}
sorting(ipt);
cout << "Sesudah Sorting : \n\n";
cout

<<

"\t+---------------+----------------

+-----------------+\n";
cout << "\t| Nim Mahasiswa | Nama Mahasiswa | Nilai
Mahasiswa |\n";
cout

<<

"\t+---------------+----------------

+-----------------+\n";
for(int i = 0;i < ipt;i++)

if(!isEmpty()) {
mhs = pop();
cout << "\t " << mhs.nim << " \t\t
mhs.nama << " \t\t

" << mhs.data_nilai << endl << endl;

" <<

cout << "\t Data telah di pop " << endl <<
endl;
cout
"\t----------------------------------------------------\n";
}
else {
cout << "\tData kosong."<<endl;
break;
}
}
}
else {
cout << "Data tidak sebanyak itu\n";
}
system("pause");
main();
}

Output Program

<<

Algoritma Program

1. Mulai program
2. Menampilkan Menu Utama
3. Apabila memasukkan inputan 1 maka akan masuk pada Menu Push Stack
4. Pada menu ini diminta inputan jumlah data
5. Memasukkan NIM
6. Memasukkan Nama
7. Memasukkan Nilai
8. Tekan keyboard untuk kembali ke Menu Utama
9. Apabila memasukkan inputan 2 maka akan masuk pada Menu Pop Stack
10. Pada menu ini diminta memasukkan inputan Jumlah data yang dikeluarkan
11. Tekan keyboard untuk kembali ke Menu Utama
12. Apabila memasukkan inputan 3 maka akan masuk pada Menu delete barang
13. Pada menu ini ini diminta memasukkan inputan Jumlah data yang dikeluarkan
14. Menampilkan data sebelum sorting
15. Menampilkan data setelah sorting
16. Tekan keyboard untuk kembali ke manu
17. Selesai
Penjelasan Program :
Program ini kita menggunakan header iostream, windows.h, dan conio.h. untuk
header iostream digunakan untuk menampilkan fungsi cout dan cin, windows digunakan

untuk memberikan warna, sedangkan conio.h digunakan untuk menampilkan fungsi getch
dan clscr.
Dalam program ini kita membuat sebuah program stack mahasiswa, dengan jumlah
stack 0 dan batas maksimumnya 10. Pada program ini akan disajikan pilihan menu yaitu
(1) Tambahkan data mahasiswa (Push Stack), pilihan (2) Tampilkan data mahasiswa (Pop
Stack), pilihan (3) Tampilkan data dan sorting (Pop Sorting). Pada menu pilihan (1)
diminta inputan jumlah data dengan rincian inputan yang dimasukkan adalah NIM, Nama,
dan Nilai. Untuk pilihan (2) diminta inputan jumlah data yang dikeluarkan yaitu data telah
di pop. Untuk pilihan (3) diminta inputan jumlah data yang dikeluarkan, setelah itu
program akan menampilkan data sebelum di sorting dan data sesudah di sorting.

KESIMPULAN
1. Stack merupakan sebuah kumpulan data yang diletakkan di atas data lainya, seperti
sebuah tumpukan.
2. 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.

DAFTAR RUJUKAN
1. Tim Asisten Dosen. 2014. Modul II, Sorting. Malang: Unversitas Negeri
Malang.
2. Tim Asisten Dosen. 2014. Modul III, Searching. Malang: Unversitas Negeri
Malang.
3. Tim Asisten Dosen. 2014. Modul IV, Stack. Malang: Unversitas Negeri
Malang.
4. Kadir, Abdul. 2012. Buku Pintar C++ Untuk Pemula. Yogyakarta:
MediaKom.
5. Shalahuddin , M. dan Rosa A. S.2009 . Belajar Bahasa Pemrograman
dengan Bahasa C++ dan Java Karya.Bandung : Informatika.

Anda mungkin juga menyukai