Anda di halaman 1dari 16

MAKALAH STRUKTUR DATA

STACK (TUMPUKAN)

Disusun Oleh :
Kelompok I
DONI SETIAWAN WAHYONO 23552011146
AISAH GANDARI RAHMAH 23552011127
OPA SOPANDI 23552011159
SUDITA 23552011121
ANDI CANDRA BAYU 23552011169

PROGRAM STUDI TEKNIK INFORMATIKA


SEKOLAH TINGGI TEKNOLOGI BANDUNG
2023
KATA PENGANTAR

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.

Subang, 29 Oktober 2023


Penulis,

Kelompok I

i
DAFTAR ISI

KATA PENGANTAR..............................................................................................i

DAFTAR ISI...........................................................................................................ii

BAB I PENDAHULUAN.......................................................................................1

1.1. Latar Belakang..........................................................................................1

1.2. Rumusan Masalah.....................................................................................1

1.3. Tujuan Penulisan.......................................................................................1

BAB II LANDASAN TEORI................................................................................2

2.1. Pengertian Struktur Data...........................................................................2

2.2. Pengertian Linear List atau Daftar Linear.................................................2

2.3. Pengertian Stack Atau Tumpukan.............................................................3

BAB III PEMBAHASAN......................................................................................4

3.1. Stack Atau Tumpukan...............................................................................4

3.2. Konsep Kerja Stack...................................................................................4

3.3. Deklarasi Stack Pada C++.........................................................................6

BAB IV PENUTUP..............................................................................................12

4.1. Kesimpulan..............................................................................................12

4.2. Saran........................................................................................................12

DAFTAR PUSTAKA...........................................................................................13

ii
BAB I
PENDAHULUAN

1.1. Latar Belakang


Struktur Data merupakan karakteristik yang terkait dengan sifat dan
cara penyimpanan sekaligus penggunaan atau pengaksesan data.
Karakteristik tersebut memiliki ikatan sekaligus timbal balik yang
dipengaruhi oleh algoritma yang mengakses data tersebut. Sehingga
disebutkan bahwa Algoritma dan Struktur Data merupakan satu kesatuan.
Struktur Data sangat berperan penting dalam sebuah program. Salah satu
teknik dasar dari macam-macam Struktur Data adalah Stack (Tumpukan)
yang lebih lanjut akan dibahas dalam materi ini.
1.2. Rumusan Masalah
Dari latar belakang masalah di atas, maka muncul rumusan masalah
yang ada sebagai berikut :
1. Apa yang dimaksud dengan Struktur Data?
2. Apa yang dimaksud dengan Linear List?
3. Apa yang dimaksud dengan Stack?
4. Bagaimana pendeklarasian Stack?
5. Apa contoh program Stack pada C++?
1.3. Tujuan Penulisan
Sejalan dengan rumusan masalah yang ada di atas, makalah ini
disusun dengan tujuan untuk mengetahui :
1. Definisi Stack
2. Menjelaskan prinsip kerja dari Stack
3. Mendeklarasikan Stack pada bahasa pemrograman C++

1
BAB II
LANDASAN TEORI

1.4. Pengertian Struktur Data


Struktur data adalah susunan data dalam memori komputer. Struktur
data memiliki kemampuan untuk mengatur, mengelola dan menyimpan data
dalam komputer untuk akses dan manipulasi yang efisien. Struktur data
tidak hanya digunakan untuk mengatur data tetapi juga digunakan untuk
memproses, mengambil dan menyimpan data. Ada berbagai jenis struktur
data dasar dan lanjutan yang digunakan dihampir setiap program perangkat
lunak atau sistem yang dikembangkan. Ada dua tipe struktur data yaitu
linier dan nonlinier. Struktur data linier adalah suatu struktur yang unsur-
unsur datanya disusun secara berurutan atau linier, yang dimana setiap
unsurnya melekat pada unsur-unsur yang berdekatan sebelumnya dan
berikutnya.
Singkatnya, struktur data adalah konsep dasar dalam ilmu komputer
dan digunakan untuk mengatur, menyimpan, dan mengambil data secara
efektif. Ada banyak tipe data berbeda, masing-masing dirancang untuk
melayani tujuan tertentu dan dapat digunakan untuk mengatur data dalam
memori utama dan sekunder.
1.5. Pengertian Linear List atau Daftar Linear
Daftar linear atau linear list dalam struktur data mengacu pada linked
list, yang merupakan struktur data kompleks yang terdiri dari sejumlah
simpul yang terhubung satu sama lain melalui tautan. Setiap simpul dalam
linked list terdiri dari dua bagian, yaitu nilai data dan penunjuk ke simpul
elemen berikutnya. Tidak seperti array, elemen linked list tidak ditempatkan
di alamat memori yang berdekatan tetapi dihubungkan oleh pointer. Linked
list sering kali dapat digunakan untuk mengimplementasikan struktur data
lain seperti stack (tumpukan), queue (antrian), atau graf (grafik).
Disini jumlah simpul atau elemen dapat bervariasi, tidak seperti
array yang jumlah elemennya selalu tetap. Kami menyatakan linear list A
yang berisi elemen T pada waktu tertentu, sebagai A = [A1,A2, …AT]. Jika

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

1.7. Stack Atau Tumpukan


Seperti pembahasan diatas, stack merupakan tumpukan data. 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. Stack atau tumpukan
pertama kali diusulkan pada tahun 1955, dan kemudian di patenkan pada
tahun 1957 oleh Friedrich L. Bauer Jerman. Operasi yang biasa dilakukan
terdapat pada stack yaitu :
1. Push : Fungsi untuk menambah item pada stack tumpukan atas
2. Pop : Fungsi untuk mengambil item pada stack tumpukan atas
3. Clear : Mengosongkan item pada stack
4. IsEmpty : Fungsi yang digunakan untuk cek stack sudah kosong
5. IsFull : Fungsi yang digunakan untuk cek stack sudah penuh
1.1. Konsep Kerja Stack
Stack atau tumpukan adalah bentuk khusus dari linear list. Pada
stack, penghapusan serta pemasukan elemennya hanya dapat dilakukan di
satu posisi, yakni posisi akhir dari list. Posisi ini disebut puncak atau top
dari stack. Elemen stack S pada posisi ini dinyatakan dengan TOP(S).
Jelasnya, bila stack S [S1, S2, …, ST], maka TOP(S) adalah ST.
Banyaknya elemen stack S pada suatu saat tertentu biasa kita sebut sebagai
NOEL(S). Jadi untuk stack kita di atas, NOEL(S) = T. Seperti halnya pada
semua linear list, pada stack dikenal operasi penghapusan dan pemasukan.
Operator penghapusan elemen pada stack disebut POP, sedangkan
operator pemasukan elemen, disebut PUSH. Untuk menggambarkan kerja
kedua operator di atas, berikut ini suatu contoh bermula dari stack hampa
S[], yang kita gambar sebagai :

4
S S NOEL(S) = 0, TOP(S) tidak terdefinisi

Mula-mula kita PUSH elemen A, diperoleh Stack S = [A]

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

Mula-mula kita PUSH elemen C, diperoleh Stack S = [A,B,C]

C
B S NOEL(S) = 3, TOP(S) = C
A

Mula-mula kita POP elemen C, diperoleh Stack S = [A,B]

B S NOEL(S) = 2, TOP(S) = B
A

Mula-mula kita PUSH elemen D, diperoleh Stack S = [A,B,D]

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;

void push (char sampah[20]);


void pop();
void awal();
int isEmpty();
int isFull();

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 :

Gambar 1 Output Program

10
Gambar 2 Output Program, Proses PUSH

Gambar 3 Output Program, Proses POP

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

Sahabat, Nusinau. Pengertian Struktur Data. [Online]. Available at


https://www.nusinau.com/pengertian-struktur-data-2 (diakses pada 30
Oktober 2023).
Alim, Rauf. Pendeklarasian Stack Pada Struktur Data [Online]. Available at
https://www.belajarbareng/struktur-data/belajar-stack (diakses pada 29
Oktober 2023).

13

Anda mungkin juga menyukai