Nama : Agung Wijaya Kusuma
NIM : 140010222
Kelas : AB141
Nama
Dosen : Ida Bagus Kadek Surya Arnawa. S.Kom
Nama
Asisten Dosen : Steven Anthony
C. Stack
Stack merupakan bentuk khusus dari suatu
struktur data, dimana node yang ditambahkan kedalam list dan diambil dari list
hanya pada prinsip pengolahannya adalah last-in first-out
( LIFO ). Dengan demikian,
hanya ada dua fungsi utama, yaitu push ( memasukkan node kedalam stack ), dan
pop ( mengambil node dari stack ).
Secara sederhana Stack atau Tumpukan
bisa diartikan sebagai kumpulan data yang seolah-olah diletakkan di atas data
yang lain. Kita Bisa menambah (menyisipkan) data dan mengambil (menghapus) data
melalui ujung yang sama yang disebut sebagai ujung atas tumpukan.
Contohnya misalkan kita mempunyai 2
buah kotak yang ditumpuk sehingga kotak yang satu akan 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.
Contoh sederhana dari Stack ( Tumpukan ) bisa digambarkan sebagai berikut :
Contoh sederhana dari Stack ( Tumpukan ) bisa digambarkan sebagai berikut :
|
6
|
|
5
|
|
4
|
|
3
|
|
2
|
|
1
|
·
Dari gambar diatas bisa di lihat bahwa kotak 2 terletak di atas kotak 1 dan di bawah kotak 3. Gambar diatas menunjukan bahwa dalam tumpukan dalam tumpukan hanya bisa menambah atau mengambil sebuah kotak lewat satu ujung yaitu bagian atas. Bisa dilihat juga yang menjadi ujung atas tumpukan adalah kotak 6. Jadi jika ada kotak lain yang akan di sisipkan, akan diletakkan di atas kotak 6, dan jika ada kotak yang akan diambil, maka kotak 6 yang akan pertama diambil.
Operasi pada Stack
Dari gambar diatas bisa di lihat bahwa kotak 2 terletak di atas kotak 1 dan di bawah kotak 3. Gambar diatas menunjukan bahwa dalam tumpukan dalam tumpukan hanya bisa menambah atau mengambil sebuah kotak lewat satu ujung yaitu bagian atas. Bisa dilihat juga yang menjadi ujung atas tumpukan adalah kotak 6. Jadi jika ada kotak lain yang akan di sisipkan, akan diletakkan di atas kotak 6, dan jika ada kotak yang akan diambil, maka kotak 6 yang akan pertama diambil.
Operasi pada Stack
Ada 2 operasi dasar yang bisa dilaksanakan
pada sebuah tumpukan, yaitu operasi menyisipkan data ( push ) dan operasi menghapus
data ( pop ).
1. Operasi Push
Perintah push digunakan untuk memasukkan
data kedalam tumpukan. Misalkan kita mempuyai data-data 2, 24, dan 32 dalam tumpukan dengan posisi 2 paling bawah dan 32 paling atas. Dan kita akan memasukkan data 45 ke dalam tumpukan tersebut. Tentu saja data 45 akan diletakkan di atas data 32.
Prosesnya dari operasi push dapat dilihat
pada penggalan program berikut ini :
void Push(NOD **T, char item)
{
NOD
*n;
n
= NodBaru(item);
n->
next = *T
*T = n;
}
2. Operasi Pop
Operasi pop adalah operasi untuk menghapus
elemen yang terletak pada posisi paling atas dari sebuah tumpukan.
Prosesnya dari operasi pop dapat dilihat
pada penggalan program berikut ini :
Char Pop(NOD **T)
{
NOD
*P; char item;
If(
! TumpukanKosong(*T)
{
P =*T;
*T = (*T)->next;
item
= P->data;
free(P)
}
return item;
}
Jika tumpukan kosong, Cara untuk
melihat kosong tidaknya suatu tumpukan adalah dengan membuat suatu fungsi yang
menghasilkan suatu data yang bertipe Boolean. Cara ini lebih disarankan karena
dengan mengetahui nilai fungsi tersebut kita bisa tahu kosong tidaknya suatu
tumpukan.
Fungsi untuk mengetahui kosong
tidaknya suatu tumpukan dapat dilihat pada program berikut ini :
//Uji Tumpukan Kosong
BOOL TumpukanKosong(NOD *T)
{
return
((BOOL) (T == NULL));
}
Contoh stack dalam coding :
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
struct STACK
{
int
data[5];
int atas;
};
STACK tumpuk;
void main()
{
clrscr();
int pilihan,baru,i;
tumpuk.atas=-1;
do
{
clrscr();
cout<<"1.Push Data"<<endl;
cout<<"2.Pop Data"<<endl;
cout<<"3.Print Data"<<endl;
cout<<endl;
cout<<"Pilihan : ";
cin>>pilihan;
switch(pilihan)
{
case 1 :
{
if(tumpuk.atas==5-1)
{
cout<<"Tumpukan
penuh";
getch();
}
else
{
cout<<"Data
yang akan di Push :";
cin>>baru;
tumpuk.atas++;
tumpuk.data[tumpuk.atas]=baru;
}
break;
}
case 2 :
{
if(tumpuk.atas==-1)
{
cout<<"Tumpuk
kosong";
getch();
}
else
{
cout<<"Data
yang akan di Pop ="<<tumpuk.data[tumpuk.atas]<<endl;
tumpuk.atas--;
getch();
}
break;
}
case 3 :
{
if
(tumpuk.atas==-1)
{
cout<<"Tumpukan
kosong "<<endl;
getch;
}
else
{
cout<<"Data=
" <<endl;
for(i=0;i<=tumpuk.atas;i++)
{
cout<<tumpuk.data[i]<<"
";
}
getch();
}
break;
}
default:
{
cout<<"Tidak ada
dalam pilihan"<<endl;
}
}
}
while(pilihan>=1
&& pilihan<=3);
getch();
}
Sumber : Buku Konsep dan Implementasi
Struktur Data dengan C++
Oleh : Lamhot Sitorus dan David J.M
Sembiring, Andi Kristanto, S.Kom
Penerbit : Andi dan Graha Ilmu







Perkenalkan, saya dari tim kumpulbagi. Saya ingin tau, apakah kiranya anda berencana untuk mengoleksi files menggunakan hosting yang baru?
BalasHapusJika ya, silahkan kunjungi website ini www.kbagi.com untuk info selengkapnya.
Di sana anda bisa dengan bebas share dan mendowload foto-foto keluarga dan trip, music, video, filem dll dalam jumlah dan waktu yang tidak terbatas, setelah registrasi terlebih dahulu. Gratis :)