STACK (TUMPUKAN)
Disusun Oleh :
Kelompok I
DONI SETIAWAN WAHYONO 23552011146
AISAH GANDARI RAHMAH 23552011127
OPA SOPANDI 23552011159
SUDITA 23552011121
ANDI CANDRA BAYU 23552011169
Puji syukur kehadirat Tuhan Yang Maha Esa yang telah memberikan
rahmat dan hidayah kepada penulis, sehingga penulis dapat menyelesaikan
makalah ini dengan membahas mengenai STACK (Tumpukan). Makalah ini
dibuat dengan tujuan untuk memenuhi tugas mata kuliah Struktur Data.
Besar harapan penulis jika makalah ini dapat bermanfaat bagi semuanya
agar bisa menambah pengetahuan dan wawasan pembaca di bidang teknologi,
informasi dan komunikasi.
Kami sadar bahwa makalah ini jauh dari kata sempurna, oleh karena itu
penulis berharap atas kritik dan saran yang membangun sangat diperlukan untuk
membuat makalah ini menjadi jauh lebih baik kedepan nya.
Kelompok I
i
DAFTAR ISI
KATA PENGANTAR..............................................................................................i
DAFTAR ISI...........................................................................................................ii
BAB I PENDAHULUAN.......................................................................................1
BAB IV PENUTUP..............................................................................................12
4.1. Kesimpulan..............................................................................................12
4.2. Saran........................................................................................................12
DAFTAR PUSTAKA...........................................................................................13
ii
BAB I
PENDAHULUAN
1
BAB II
LANDASAN TEORI
2
T = 0, maka A disebut list hampa atau null list. Operasi penyisipan dan
penghapusan dalam linked list dapat dilakukan dengan mudah.
1.6. Pengertian Stack Atau Tumpukan
Stack atau tumpukan adalah tumpukan data yang tampak bertumpuk
dengan data lain, bentuk khusus dari linear list. Pada stack, penghapusan
dan penyisipan elemen hanya dapat dilakukan pada satu posisi yaitu akhir
list. Posisi ini disebut dengan puncak atau top dari stack.
3
BAB III
PEMBAHASAN
4
S S NOEL(S) = 0, TOP(S) tidak terdefinisi
S NOEL(S) = 1, TOP(S) = A
A S
Mula-mula kita PUSH elemen B, diperoleh Stack S = [A,B]
B S NOEL(S) = 2, TOP(S) = B
A
C
B S NOEL(S) = 3, TOP(S) = C
A
B S NOEL(S) = 2, TOP(S) = B
A
D
B S NOEL(S) = 3, TOP(S) = D, dan seterusnya.
A
5
Terlihat bahwa kedua operasi di atas, pada stack adalah bersifat
terakhir masuk pertama keluar atau last in first out (LIFO). Pada hakekatnya
kita tidak membatasi berapa banyak elemen dapat masuk ke dalam stack.
Untuk suatu stack S[S1, S2,..., SNOEL], kita katakan bahwa elemen Si,
berada di atas elemen Sj, jika i lebih besar dari j. Suatu elemen tidak dapat
kita POP ke luar, sebelum semua elemen di atasnya dikeluarkan.
1.2. Deklarasi Stack Pada C++
Meskipun stack amat luas digunakan, banyak bahasa pemrograman
tidak mempunyai tipe data stack secara built-in. Dalam hal ini, Pemrogram
harus memanipulasi sendiri fasilitas yang dimiliki bahasa pemrograman
tersebut, untuk dapat melakukan operasi stack terhadap variabel stack.
Beriku penggunaan stack menggunakan bahasa pemrograman C++.
#include<iostream>
#include<stdlib.h>
#include<cstring>
#include<windows.h>
#define max 20
using namespace std;
struct tong
{
int top;
char tmp[20][max];
}
tong;
6
int main()
{
int pilih;
char sampah[20];
string i;
awal();
do
{
system("cls");
cout<<"\n\t----- Contoh Program Stack -----\n";
cout<<"\n\t----- Tumpukan Tong Sampah -----\n\n";
cout<<" 1. PUSH (Simpan)"<<endl;
cout<<" 2. POP (Ambil)"<<endl;
cout<<" 3. EXIT (Keluar)"<<endl;
cout<<"___________________________________________________
________________\n\n";
if (!isEmpty())
{
for(int i = tong.top; i>=0; i--)
{
cout<<"["<<tong.tmp[i]<<"]"<<endl;
}
}
else
{
7
cout<<"[ tong sampah kosong ]";
}
cout<<"\nMasukan Pilihan : ";
cin>>pilih;
switch (pilih)
{
case 1:
cout<<"Buang sampah : ";
cin>>sampah;
push(sampah);
break;
case 2:
pop ();
break;
case 3:
cout<<"Tekan enter untuk keluar : ";
break;
default:
cout<<"ERROR!";
break;
}
}
while (pilih!=3);
}
void push (char sampah[20])
8
{
if (!isFull())
{
tong.top = tong.top+1;
strcpy(tong.tmp[tong.top],sampah);
}
else
cout<<"isi tong sampah penuh";
}
void pop ()
{
if (!isEmpty())
{
tong.top--;
cout<<"Sampah pada tumpukan ke- "<<tong.top+2<<"sudah
diambil";
}
else
cout<<"Sampah dalam tong kosong";
}
void awal()
{
tong.top = -1;
}
int isEmpty()
{
if (tong.top==-1)
9
return 1;
else
return 0;
}
int isFull()
{
if (tong.top == max-1)
return 1;
else
return 0;
}
Output :
10
Gambar 2 Output Program, Proses PUSH
11
BAB IV
PENUTUP
1.3. Kesimpulan
Stack adalah struktur data linier yang dapat diakses hanya pada
bagian akhir untuk memasukkan ataupun menghasilkan datanya.
Karakteristik penting stack adalah bersifat LIFO (Last In First Out) artinya
data yang terakhir masuk merupakan data yang akan keluar terlebih dahulu.
Contoh sederhana dari penggunaan Stack adalah ketika kita ingin
membuang sampah kedalam tong sampah, dimana sampah yang
dimasukkan dengan urutan plastik, gelas, botol, kaleng, daun, kaca, sisa
makanan maka yang dapat dikeluarkan pertama kali dari tong sampah itu
adalah urutan yang terakhir masuk yaitu sisa makanan. Karena sisa makanan
terakhir masuk ke dalam tong sampah.
1.4. Saran
Dari uraian di atas, penulis berharap pembaca dapat memahami
tentang pengertian Stack (Tumpukan), Operasi pada Stack, Deklarasi Stack
dalam Pascal, Aplikasi Stack, dan Contoh Program Stack dalam Pascal.
Stack atau tumpukan ini dapat membantu dalam penyelesaian sebuah
kasus, maupun dapat dijadikan bahan studi oleh beberapa mahasiswa
maupun programmer. Stack pada struktur data merupakan sebuah
pembelajaran yang tergolong mudah untuk dipahami, akan tetapi sebaiknya
dalam pemahaman pada stack ini benar dalam menggunakan operator
PUSH, POP, CLEAR dan lainnya pada stack.
Penulis menyadari bahwa dalam pembuatan makalah ini masih
banyak kesalahan dan kekurangan, baik dari segi penulisan maupun dari
segi pemaparan. Maka dari itu pemakalah menerima dan mengharapkan
kritik dan saran dari pembaca yang sifatnya membangun, agar makalah ini
dapat menjadi lebih sempurna dan menjadi rujukan bagi pembaca nantinya.
12
DAFTAR PUSTAKA
13