STRUKTUR DATA
TUMPUKAN (STACK)
PENYUSUN :
Diajukan sebagai salah satu syarat kelulusan Praktikum Struktur Data semester III
tahun ajaran 2017/2018
Oleh:
Nama NIM Unit Nilai
Agung Prayogo 160504033 01
Disetujui oleh
Koordinator Praktikum 2 Dosen Pengampu Mata Kuliah
Struktur Data
1.2 Tujuan
Berikut tujuan dari pelaksanaan praktikum Struktur Data mengenai Tumpukan
(Stack), yaitu :
Memahami konsep stack
Memahami operasi dasar stack
Dapat mengaplikasikan stack dalam kasus nyata
BAB II
DASAR TEORI
3.1 Algoritma
Algoritma merupakan suatu langkah-langkah logis tertentu yang digunakan
untuk menyelesaikan suatu masalah.
3.1.1 Algoritma Tumpukan (stuck) :
1. Start
2. Mendeklarasi fungsi stack
a. int isempty (menanyakan kosongkah?, jika kosong maka cetak stack
kosong).
b. int isfull (menanyakan penuhkah?, jika penuh cetak stack penuh).
c. int cetak (mencetak stack).
d. int push (mengisi stack).
e. int pop (mengambil isi stack).
3. Pilihan menu stack.
a) Menu 1 adalah Push stack, jika pilih satu maka akan memanggil fungsi
push :
int push(stack A, int &top)
{
system("CLS");
if(top==n)
isfull(top);
else
{
top++;
cout<<"push\nmasukkan data : ";cin>>A[top];
cout<<"posisi top saat ini : "<<top<<endl<<endl;
}
}
b) Menu 2 adalah Pop stack, jika pilih satu maka akan memanggil fungsi
pop :
int pop(stack A, int &top)
{
system("CLS");
if(top==0)
isempty(top);
else
{
cout<<"pop\nsatu data sudah di pop\n";
top--;
cout<<"posisi top saat ini : "<<top<<endl<<endl;
}
}
c) Menu 3 adalah Cetak, jika pilih 3 maka akan memanggil fungsi cetak :
int cetak(stack A, int &top)
{
system("CLS");
int i;
if(top==0)
isempty(top);
else
{
for(i=1;i<=top;i++)
cout<<A[i]<<" ";
cout<<endl<<endl;
}
}
d) Menu 4 adalah exit, jika pilih 5 maka program akan diakhiri
4. Selesai.
3.2 Flowchart
Flowchart merupakan sebuah bentuk gambar ataupun diagram yang memiliki
aliran satu atau dua arah yang berlaku secara sekuensial atau berkesinambungan.
3.2.1 flowchart Tumpukan (stuck) :
start
stack A={1,2,3,4,5,6,7,8,9,10};
int i, pilih;
Stack
penuh
Cetak
Input Input
Posisi top saat
pilih true A[top]
ini
false
false
Pilih=4
Cetak
Nilai dari
false variabel A
Pilihan true
salah
end
3.3 Analisa Flowchart
3.3.1 Analisa flowchart Tumpukan (stack):
Input
Menginput nilai ke variabel pilih
pilih
Stack
Mencetak stack penuh.
penuh
Stack
Mencetak stack kosong
kosong
Satu data
sudah di Mencetak kalimat satu data sudah di pop.
pop
Cetak
Posisi top saat Cetak posisi top saat ini.
ini
Stack
Mencetak stack kosong.
kosong
Cetak
Nilai dari Mencetak nilai dari variabel A.
variabel A
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
typedef int stack[10];
int n=5, top=0;
for(i=1;i<=top;i++)
cout<<A[i]<<" ";
cout<<endl<<endl;
}
}
int push(stack A, int &top)
{
system("CLS");
if(top==n)
isfull(top);
else
{
top++;
cout<<"push\nmasukkan data : ";cin>>A[top];
cout<<"posisi top saat ini : "<<top<<endl<<endl;
}
}
int pop(stack A, int &top)
{
system("CLS");
if(top==0)
isempty(top);
else
{
cout<<"pop\nsatu data sudah di pop\n";
top--;
cout<<"posisi top saat ini : "<<top<<endl<<endl;
}
}
int main()
{
stack A={1,2,3,4,5,6,7,8,9,10};
int i, pilih;
menu :
cout<<"stack\n";
cout<<"1. push\n2. pop\n3. view data\n4. exit\nmasukkan
pilihan : ";cin>>pilih;
switch(pilih)
{
case 1 : {push(A,top);break;}
case 2 : {pop(A,top);break;}
case 3 : {cetak(A,top);break;}
case 4 : {return 0;break;}
default : {system("CLS");cout<<"pilihan salah\n\n";}
}
goto menu;
}
4.2 Keluaran/Output
Berikut keluaran/output dari source code program tumpukan (stuck) :
Dengan menggunakan fungsi push () dan pop () pada stack, membuat program untuk
operasi stuck data integer sebanyak 5 elemen, dengan data 10,20,30,40,50
menampilkan hasilnya, kemudian menuliskan dalam laporan.
Berikut Source code dari tugas praktikum untuk fungsi push () dan pop () :
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
typedef int stack[10];
int n=5, top=0;
cout<<endl<<endl;
}
}
int push(stack A, int &top)
{
system("CLS");
if(top==n)
isfull(top);
else
{
top++;
cout<<"push\nmasukkan data : ";cin>>A[top];
cout<<"posisi top saat ini : "<<top<<endl<<endl;
}
}
int pop(stack A, int &top)
{
system("CLS");
if(top==0)
isempty(top);
else
{
cout<<"pop\nsatu data sudah di pop\n";
top--;
cout<<"posisi top saat ini : "<<top<<endl<<endl;
}
}
int main()
{
stack A={1,2,3,4,5,6,7,8,9,10};
int i, pilih;
menu :
cout<<"stack\n";
cout<<"1. push\n2. pop\n3. view data\n4. exit\nmasukkan
pilihan : ";cin>>pilih;
switch(pilih)
{
case 1 : {push(A,top);break;}
case 2 : {pop(A,top);break;}
case 3 : {cetak(A,top);break;}
case 4 : {return 0;break;}
default : {system("CLS");cout<<"pilihan salah\n\n";}
}
goto menu;
}
Outpu/keluaran dari program fingsi push () dan pop() :
Kemudian, memasukkan data dengan angka 10 dan menekan enter. Dan pada
Masukkan pilihan kembali menginputkan angka 1 karena kita masih menggunakan
fungsi push() yang berada di pilihan 1, kemudian menekan enter.
Kemudian memasukkan data dengan angka 20 dan melakukan hal yang sama dengan
sebelumnya untuk menginputkan pilihan 1.
Kemudian memasukkan data dengan angka 30 dan melakukan hal yang sama dengan
sebelumnya untuk menginputkan pilihan 1. Kita lakukan hal ini hinggan input data
dengan nilai 50.
Kemudian memasukkan data dengan angka 40 dan melakukan hal yang sama dengan
sebelumnya untuk menginputkan pilihan 1.
Selanjutnya untuk memasukkan data dengan nilai 50, maka pada menu memasukkan
pilihan kita memilih menu ke-2 karena kita akan mem-pop kan nilai yang telah kita
inputkan.
Ketika kita sudah memilih menu 2 yaitu Pop, maka berisi penjelasan atau pun tampilan
seperti di atas. Posisi TOP saat ini : 4. Untuk posisi TOP akan berubah setiap kita
memilih menu pilihan 2 hingga akhirnya nanti stuck menjadi kosong. Dan kita kembali
memilih menu 2 untuk mem-pop kan nilai selanjutnya.
Pada output, Posisi TOP saat ini : 3. Untuk posisi TOP sudah berubah yang
sebelumnya 4 menjadi 3. Dan kita kembali memilih menu 2 untuk mem-pop kan nilai
selanjutnya.
Pada output, Posisi TOP saat ini : 2. Untuk posisi TOP sudah berubah yang
sebelumnya 4 menjadi 3. Dan kita kembali memilih menu 2 untuk mem-pop kan nilai
selanjutnya.
Pada output, Posisi TOP saat ini : 1. Untuk posisi TOP sudah berubah yang
sebelumnya 4 menjadi 3. Dan kita kembali memilih menu 2 untuk mem-pop kan nilai
selanjutnya.
Pada output, Posisi TOP saat ini : 0. Untuk posisi TOP sudah berubah yang
sebelumnya 4 menjadi 3. Dan kita kembali memilih menu 2 untuk mem-pop kan nilai
selanjutnya.
Dan pada output tersebut stuck sudah kosong. Artinya sudah tidak ada data maupun
tumpukan data di dalam stuck.
Terakhir kita dapat memilih menu 4 untuk keluar dari program dan bisa langsung
menutup program.
BAB V
KESIMPULAN
Stack adalah struktur data yang mengikuti aturan Last In First Out (LIFO),
yaitu data yang masuknya terakhir harus keluar terlebih dahulu. Mirip seperti bola
tenis yang berada di dalam tempatnya. Apabila ingin mengambil bola yang paling
dalam harus mengeluarkan beberapa bola di atasnya. Prinsip ini digunakan di hampir
semua sistem komputer modern.
Operasi dasar pada Stack :
1. Createstack(S) : Yaitu membuat tumpukan baru S, dengan sejumlah elemen
kosong.
2. Makenull(S) : Yaitu mengosongkan tumpukan S, jika ada elemen maka semua
elemen akan dihapus.
3. Empty : Yaitu tumpukan kosong ?, untuk menguji apakah tumpukan kosong atau
tidak.
4. Push(x,S) : Yaitu memasukan elemen baru x ketumpukan S. Proses PUSH,
tumpukan harus diperiksa apakah jumlah elemen sudah mencapai maksimum atau
tidak, jika sudah maka overflow. Operasi PUSH merupakan operasi untuk menyisip
atau menambah elemen yg terletak pada posisi paling atas dari sebuah tumpukan.
5. Pop(S) : Yaitu mengeluarkan elemen posisi teratas pada tumpukan S. Proses POP,
tumpukan harus diperiksa apakah tumpukan sudah kosong/tidak ada lagi elemen yang
hendak dikeluarkan, jika tidak maka underflow. Operasi POP merupakan operasi
untuk menghapus elemen yang terletak pada posisi paling atas dari sebuah tumpukan
DAFTAR PUSTAKA
Reza Ade Putra. dkk.2017. Modul Praktikum Struktur Data, Program Studi
TeknikInformatika, FakultasTeknik, UniversitasSamudra.
Ramadhani, Dwitha Fajri dan Damayanti, Ika. 2017. Laporan Praktikum X Stack,
Pendidikan Teknik Informatika, Jurusan Teknik Eektro, Fakultas Teknik,
Universitas Negeri Malang.