MAKALAH STRUKTUR DATA
STACK
Oleh:
Adita Julian(1163001)
Dosen Pengampu:
I Made Yadi Dharma, S.Kom.,M.Kom.
POLITEKNIK POS INDONESIA 2017
KATA PENGANTAR
Puji syukur kehadirat
Allah Yang Maha Esa atas segala rahmatNYA sehingga makalah ini dapat tersusun
hingga selesai . Tidak lupa saya juga mengucapkan banyak terimakasih atas
bantuan dari pihak yang telah berkontribusi dengan memberikan sumbangan baik
materi maupun pikirannya.
Dan harapan saya semoga
makalah ini dapat memenuhi tugas tugas mata
kuliah Struktur Data dan semoga dapat menambah pengetahuan saya. Saya selaku penyusun
berusaha mengerjakan dan menyelesaikannya dengan semaksimal mungkin. Walaupun
sangat jauh dari kesempurnaan dan bahkan mungkin tidak sesuai dengan yang
diharapkan, namun penyusun berharap Bapak dosen dapat menerima Makalah yang
penyusun buat dengan berjudul “STACK ( TUMPUKAN )” ini.
Karena keterbatasan pengetahuan
maupun pengalaman saya, saya berharap
Bapak dapat memberi saran atau masukan agar makalah ini menjadi baik ataupun
lebih baik lagi.
Bandung,
April 2017
Penyusun
BAB I
PENDAHULUAN
A. Latar Belakang
Salah satu konsep yang sangat berguna dalam ilmu
komputer adalah satu bentuk struktur data yang disebut dengan stack (tumpukan).
Dalam ilmu komputer sering sekali istilah stack (tumpukan) disebutkan. Dengan
ini kami coba mengenali apa itu stack dan bagaimana uraian-uraiannya menurut
5w+1h.
Makalah berjudul (stack) ini dipilih
berdasarkan undian kelompok tugas materi kuliah struktur data.
B. Rumusan Masalah
- Apa itu Stack?
- Kenapa bisa tersusun menjadi stack?
- Siapa pengguna Stack?
- Mengapa aplikasi Stack digunakan?
- Dimana mendeklarasikan Stack?
- Kapan operasi pada Stack digunakan?
- Bagaimana kelebihan dan kekurangan Stack?
- Bagaimana contoh program stack?
C. Tujuan
- Untuk mengetahui definisi stack.
- Untuk mengetahui apa yang ada dalam stack.
- Untuk mengetahui siapa pengguna stack.
- Untuk mengetahui tujuan penggunaan aplikasi stack.
- Untuk mengetahui mendeklarasikan stack.
- Untuk mengetahui penggunaan operasi stack.
- Untuk mengetahui kelebihan dan kekurangan stack.
- Untuk mengetahui contoh program stack.
1.
Apa
itu Stack?
Dalam dunia komputer, penggunaan
stack atau tumpukan merupakan salah sastu komponen penting untuk menjamin
proses penanganan suatu data disamping hal lain seperti quenue (antrian),
linked list, dan tree.
Stack adalah suatu koleksi atau
kumpulan item data yang terorgaisasi dalam bentuk urutan linear, yang operasi
pemasukan dan penghapusan datanya dilakukan pada salah satu sisinya.Sedangkan pengertian stack
pada struktur
data adalah sebagai
tumpukan dari benda, sekumpulan data yang seolah-olah diletakkan di
atas data yang lain, koleksi dari objek-objek homogen, atau Suatu urutan
elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top)
saja.Stack merupakan bentuk
khusus dari suatu struktur data, dimana node yang ditambahkan ke dalam
list dan diambil dari list hanya pada kepalanya, atau dengan prinsip
pengolahannya adalah last-in first-out (LIFO). Pada struktur ini
hanya ada dua fungsi utama, yaitu push (memasukkan node ke dalam
stack), dan pop (mengambil node dari stack).
PENGERTIAN TUMPUKANSecara sederhana tumpukan
bisa diartikan sebagai kumpulan data yang seolaholah diletakkan di atas
data yang lain. Dalam suatu tumpukan akan dapat dilakukan operasi
penambahan (penyisipan) dan pengambilan (penghapusan) data
melalui ujung yang sama, ujung ini merupakan ujung atas
tumpukan.Contoh Kasus :Terdapat dua buah kotak yang
ditumpuk, kotak yang satu akan ditumpuk diatas kotak yang
lainnya. Jika kemudian tumpukan 2 kotak tadi, ditambah kotak ketiga,
keempat, kelima, dan seterusnya, maka akan
diperoleh sebuah tumpukan kotak yang terdiri
dari N kotak.
F (ATAS)
EDCBA (BAWAH)
Dapat dilihat bahwa kotak B
terletak diatas kotak A dan ada dibawah kotak C. Berdasarkan pada tumpukan
tersebut dapat disimpulkan bahwa penambahan dan pengambilan
sebuah kotak hanya dapat dilakukan dengan
melewati satu ujung saja, yaitu bagian
atas. Kotak F adalah kotak paling atas sehingga jika ada kotak lain
yang akan disisipkan maka kotak tersebut akan diletakkan pada posisi
paling atas (diatas kotak F). Demikian juga pada
saat pengambilan kotak, kotak F akan diambil pertama
kali.
Ilustrasi
StackTerdapat
dua buah kotak yang ditumpuk, kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak tadi, ditambah
kotak ketiga, keempat, kelima, dan seterusnya,
maka akan diperoleh sebuah stack kotak yang terdiri dari N kotakStack bersifat LIFO (Last In First Out) artinya Benda yang terakhir masuk
ke dalam stack akan menjadi yang pertama keluar dari
stack Const MaxElemen = 255;Type Tumpukan = record
isi : array[1 .. MaxElemen] of Integer;
atas : 0 .. MaxElemen
end;Var T : TumpukanDengan deklarasi di atas
kita menganggap bahwa elemen tumpukan T, yang tersimpan dalam larik
T.Isi adalah bertipe integer dan banyaknya elemen tumpukan maksimum adalah
sebesar MaxElemen, yang dalam hal ini 255 elemen.
Pada medan Atas, nilainya
menunjukkan banyaknya elemen yang ada dalam suatu tumpukan, yang sekaligus
menunjukkan posisi elemen teratas dalam tumpukan yang dimaksud. Jika
T.Atas = 5, berarti dalam tumpukan ada 5 elemen, yaitu T.isi[1],T.isi[2],…..,
T.isi[5]. Jika data yang diambil, maka nilai Medan T.Atas dikurangi 1 menjadi
4, yang berarti T.isi[4] adalah elemen teratas. Jika data ditambah maka nilai
T.atas ditambah dengan 1 menjadi 6, sehingga T.isi[6] adalah elemen teratas.
2. Kenapa bisa tersusun menjadi stack?
Stack adalah suatu tumpukan dari benda. Konsep
utamanya adalah LIFO (Last In First Out), benda yang terakhir masuk dalam stack
akan menjadi benda pertama yang dikeluarkan dari stack. Tumpukan disebut juga
“Push Down Stack” yaitu penambahan elemen baru (PUSH)ndan penghapusan elemen
dari tumpukann(POP). Contoh pada PDA (Push Down Automaton). Sistem pada
pengaksesan pada tumpukan menggunakn system LIFO (Last In First Out), artinya
elemen yang terakhir masuk itu yang akan pertama dikeluarkan dari tumpukan
(Stack). Ilustrasi tumpukan (Stack) dapat digambarkan seperti tumpukan CD atau
tumpukan sate. Stack merupakan suatu susunan koleksi data dimana dapat
ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut
dengan Top Of Stack.
3. Siapa pengguna stack?
Stack digunakan oleh seseorang yang akan meresenpetasi pemanggilan prosedur,
perhitungan ekspresi aritmatika, rekursifitas, backtracking. Adapun contoh aplikasi stack,
diantaranya:
MATCHING PARENTHESES
Proses ini dilakukan compiler untuk memeriksa
kelengkapan tanda kurung yang terdapat pada suatu ekspresi aritmetik. Sedangkan
stack di sini digunakan sebagai tempat prosesnya.
NOTASI POSTFIX
Bentuk aplikasi stack yang lain adalah mengubah
suatu ekspresi aritmatik (string) ke dalam notasi postfix. Notasi postfix ini
digunakan oleh compiler untuk menyatakan suatu ekspresi aritmatik dalam bahasa
tingkat tinggi (high level language). Stack digunakan oleh compiler untuk
mentransformasikan ekspresi aritmatik menjadi suatu ekspresi dalam
bentuk/notasi postfix.
4. Mengapa aplikasi Stack digunakan?
Aplikasi stack digunakan untuk berbagai macam
keperluan seperti pengujian kalimat palindrome, penguji tanda kurung (matching
parentheses), dan juga berfungsi sebagai konversi dari notasi infix menjadi
notasi postfix.
Pada perhitungan aritmetika, notasi infix adalah notasi
yang menempatkan operator ditengah dua operand, sedangkan notasi postfix adalah
notasi yang menempatkan operator setelah dua operand. Penggunaan notasi infix
merupakan hal yang lumrah digunakan dalam perhitungan aritmetika dibandingkan
dengan notasi postfix, akan tetapi bagi mesin komplikasi postfix merupakan
notasi yang digunakan untuk melakukan suatu perhitungan.
Stack juga biasa digunakan dalam mengontrol operasi
dalam sebuah sistem operasi. Selain itu stack juga merupakan algoritma yang
baik yang dapat digunakan untuk membuat phaser (membaca urutan operasi dari
sebuah persamnaan matematika).
5. Dimana mendeklarasikan stack?
Sebelum
struktur data tumpukan ini bisa digunakan, harus dideklarasikan dahulu dalam
kamus data. Ada beberapa cara pendeklarasian struktur data ini, salah satunya
dengan menggunakan tata susunan linear (larik) dan sebuah variable, yang
dikemas dalam tipe data record. Stack (tumpukan) adalah struktur data bertipe
record yang terdiri dari field elemen, bertipe larik/array dengan indek dari 1
sampai dengan MaksTum (Maksimum Tumpukan), atas, bertipe interger berkisar dari
0 (saat kosong) sampai dengan MaksTum (Maksimum Tumpukan).
6. Kapan operasi pada stack digunakan?
Operasi yang sering diterapkan pada struktur data
Stack (Tumpukan) adalah Push dan Pop. Operasi – operasi yang dapat diterapkan
adalah sebagai berikut :
Push :
digunakan untuk menembah item pada Stack pada Tumpukan paling atas.
Pop :
digunakan untuk mengambil item pada Stack pada Tumpukan paling atas.
Clear :
digunakan untuk mengosongkan Stack
Create Stack :
membuat Tumpukan baru S, dengan jumlah elemen kosong.
MakeNull :
mengsongkan tumpukan S,jika ada elemen maka semua elemen dihapus.
sEmpty :
fungsi yang digunakan untuk mengecek apakah Stack sudah kosong.
Isfull :
fungsi yang digunakan untuk mengecek apakah Stack sudah penuh.
Pada proses Push, Tumpukan (Stack) harus diperiksa
apakah jumlah elemen sudah mencapai masimum atau tidak. Jika sudah mencapai
maksimum maka OVERFLOW, artinya Tumpukan penuh tidak ada elemen yang dapat
dimasukkan ke dalam Tumpukan. Sedangkan pada proses Pop, Tumpukan harus
diperiksa apakah ada elemen yang hendak dikeluarkan atau tidak. Jika tidak ada
maka UNDERFLOW, artinya tumpukan kosong tidak ada elemen yang dapat diambil.
7. Bagaimana kelebihan dan kekurangan stack?
Kelebihan stack yaitu penambahan dan penghapusan
data dapat dilakukan dengan cepat, yaitu selama memori masih tersedia
penambahan data bisa terus dilakukan. Dengan demikian tidak ada kekuatiran
terjadinya stack overflow.
Kekurangan stack yaitu setiap sel tidak hanya
menyimpan value saja, melainkan juga pointer ke sel berikutnya. Hal ini
menyebabkan implementasi stack memakai linked list akan memerlukan memori yang
lebih banyak daripada di implementasikan dengan array. Setiap halaman pada linked
list hanya bisa di akses dengan cara sekuensial, sehingga lambat.
8. Contoh codingan program stack(push,pop)
// Adita program
#include <cstdlib>
#include <string>
#include <iostream>
using namespace std;
int top=-1;
char stack[2];//asumsi max stack
100
char x;
void push()
{
cout<<"masukkan satu karakter:
";
cin>>x;
top++;
stack[top]=x;
}
void pop()
{
if(top<0){
cout<<"stack
kosong"<<endl;
return;
}
x=stack[top];
top--;
cout<<"karakter yang di 'POP'
adalah "<<x<<endl;
}
void cetak()
{
if(top<0){
cout<<"stack
kosong" <<endl;
return ;
}
int
i=0;
for(i=top;i>=0;i--)
cout<<stack[i]<<endl;
cout<<"\n'ADITA'"<<endl;
}
int main(int argc, char *argv[])
{
char input;
cout<<"\t\t\tPROGRAM STACK
ADITA\n"<<endl;
cout<<"MASUKKAN PILIHAN:
"<<endl;
cout<<"\t1.PUSH"<<endl;
cout<<"\t2.POP"<<endl;
cout<<"\t3.TAMPILKAN"<<endl;
cout<<"\t4.QUIT"<<endl;
while(true)
{
cout<<"\nMasukan pilihan: ";
cin>>input;
if(input=='1'){
push();
}else
if(input=='2'){
pop();
}else
if(input=='3'){
cetak();
}else
if(input=='4'){
break;
}else{
cout<<"Perintah '
"<<input<<" tidak dikenal"<<endl;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
SCREENSHOTNYA
Kesimpulan
Stack adalah
suatu koleksi atau kumpulan item data yang terorganisasi dalam bentuk urutan
linier, yang operasi pemasukan dan penghapusan datanya dilakukan pada salah
satu sisinya. Pada stack, jarang sekali dilakukan traversal, karena keunikan
stack justru pada operasi yang hanya menyangkut elemen TOP. Namun dibutuhkan
traversal misalnya untuk mencetak isi stack. Pada stack, elemen yang diproses
hanya elemen pada TOP. Maka hampir tidak pernah dilakukan search atau bersifat
LIFO (Last In First Out). Operasi-operasi
pada Stack :
Create(Stack)Operasi Create(Stack) digunakan
untuk membuat suatu stack baru dengan nama stack, yang nilai elemen saat stack
tersebut dibuat adalah NOEL(S) = 0, TOP(S) = NULL (tidak terdefinisikan).IsEmpty(Stack)Operasi ini merupakan operasi
untuk mencek isi dari suatu stack dalam keadaan kosong atau berisi.Operasi ini memiliki kondisi
boolean yaitu :
- True jika stack tersebut kosong atau dapat dikatakan NOEL(S) = 0.
- False jika stack tersebut tidak dalam kondisi kosong atau dapat dikatakan NOEL(S)
- Push(Stack, Elemen)
Saran
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 baik dan menjadi rujukan
bagi pembaca nantinya.
bagus untuk dibaca.
BalasHapushttp://blog.binadarma.ac.id/irman_effendy
thanks sangat berguna
BalasHapusMantap bermaanfaat banget terimakasih
BalasHapusSangat membantu
BalasHapus