StrukturData
List, Stack
putuastawa.wordpress.com
Putu Putra Astawa
Beberapa Jenis Struktur Data
1.Array
1.Linear List
2.Stack
3.Queue
1.
Ap
a?
2.
Ba
ga
ima
na
ca
raim
ple
me
nta
sin
ya
?
Putu Putra Astawa
3.Queue
2.List
1.Connected List
2.Circular List
3.Doubly-linked List
4.Multi list structure
3.Tree Structure
2.
Ba
ga
ima
na
ca
raim
ple
me
nta
sin
ya
?
Linear List
Linear List
Putu Putra Astawa
ApakahLinear List itu?
•Sekumpulanelemenyang diatursecaraterurut
][
,],1
[],
[],1
[,
],2[
],1[nx
kx
kx
kx
xx
LL
+−
•Linear List tidaksamadenganConnected-List
][
,],1
[],
[],1
[,
],2[
],1[nx
kx
kx
kx
xx
LL
+−
OperasipadaLinear List
No.
Operasi
1M
en
am
ba
hk
an
se
bu
ah
ele
me
n s
eb
elu
m e
lem
en
ke
-k
2M
en
gh
ap
us
ele
me
n k
e-k
2M
en
gh
ap
us
ele
me
n k
e-k
3M
em
ba
ca
/me
nu
lis i
si
ele
me
n k
e-k
4M
en
ca
ri e
lem
en
de
ng
an
ke
y t
ert
en
tu
5M
en
gg
ab
un
gk
an
be
be
rap
a l
ist
me
nja
di
sa
tu
6M
em
ec
ah
se
bu
ah
lis
t k
e b
eb
era
pa
bu
ah
7M
en
gc
op
y s
eb
ua
h l
ist
8M
en
gh
itu
ng
ba
ny
ak
ny
ae
lem
en
da
lam
se
bu
ah
list
List, Stack & Queue
•Tidaksemuaoperasilist diperlukanpadasetiapprogram
▫Penentuanstrukturdata didasarkanpadaoperasiyang
diperlukansajaagar bisaberjalandenganefisien
•PadasebuahLinear List, penyisipandanpenghapusan
elemendapatdijalankandisebarangposisi
Putu Putra Astawa
•PadasebuahLinear List, penyisipandanpenghapusan
elemendapatdijalankandisebarangposisi
•Bentukkhususlinear list:
Penambahanelemendanpenghapusannya
dilakukandiposisiterdepanatau
posisiterbelakangsaja
Sta
ck
Qu
eu
e
Stack danQueue jugamerupakansalahsatujenislist
List, Stack & Queue
•PadasebuahLinear List, penyisipandanpenghapusan
elemendapatdijalankandisebarangposisi
•Penambahandanpenghapusanelemenpadastack/queue
dilakukandiposisiterdepanatauposisiterbelakangsaja
Putu Putra Astawa
12
63
45
12
63
45
12
63
45
Lis
t
Sta
ck
Qu
eu
e
Stack
Stack
Putu Putra Astawa
Apakah Stack itu ?
Putu Putra Astawa
Apakah Stack itu ?
•Penambahandanpenghapusanelemendilakukanpada
elemenlist yang terletakdipaling depan
•Yang dihapusadalahelemenyang paling terakhir
Putu Putra Astawa
ditambahkan
•Namalain:LIFO (Last In First Out)
•OperasiPUSH: Menambahkanelemenpadasebuah
stack
1PUSH
top
==
bo
tto
m
Apakah Stack itu ?
•Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
•Yang dihapus adalah elemen yang paling terakhir
Putu Putra Astawa
ditambahkan
•Nama lain:LIFO (Last In First Out)
•Operasi PUSH: Menambahkan elemen pada sebuah
stack
PUSH
12to
p
bo
tto
m
Apakah Stack itu ?
•Penambahandanpenghapusanelemendilakukanpada
elemenlist yang terletakdipaling depan
•Yang dihapusadalahelemenyang paling terakhir
ditambahkan
Putu Putra Astawa
ditambahkan
•Namalain:LIFO (Last In First Out)
•OperasiPUSH: Menambahkanelemenpadasebuah
stack
PUSH
123
bo
tto
m
top
ApakahStack itu?
•Penambahandanpenghapusanelemendilakukanpada
elemenlist yang terletakdipaling depan
•Yang dihapusadalahelemenyang paling terakhir
ditambahkan
•Namalain:LIFO (Last In First Out)
Putu Putra Astawa
•Namalain:LIFO (Last In First Out)
•OperasiPUSH: Menambahkanelemenpadasebuah
stack
PUSH
1234
bo
tto
m
top
ApakahStack itu?
•Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
•Yang dihapus adalah elemen yang paling terakhir
ditambahkan
•Nama lain:LIFO (Last In First Out)
•Operasi PUSH: Menambahkan elemen pada sebuah
Putu Putra Astawa
•Operasi PUSH: Menambahkan elemen pada sebuah
stack
PUSH
12345
bo
tto
m
top
ApakahStack itu?
•Penambahandanpenghapusanelemendilakukanpada
elemenlist yang terletakdipaling depan
•Yang dihapusadalahelemenyang paling terakhir
ditambahkan
•Namalain:LIFO (Last In First Out)
•OperasiPUSH: Menambahkanelemenpadasebuah
Putu Putra Astawa
•OperasiPUSH: Menambahkanelemenpadasebuah
stack
PUSH
123456
bo
tto
m
top
ApakahStack itu?
•Penambahandanpenghapusanelemendilakukanpada
elemenlist yang terletakdipaling depan
•Yang dihapusadalahelemenyang paling terakhir
ditambahkan
•Namalain:LIFO (Last In First Out)
•OperasiPOP: Menghapussebuahelemendarisebuah
Putu Putra Astawa
•OperasiPOP: Menghapussebuahelemendarisebuah
stack
POP
123456
bo
tto
m
top
Apakah Stack itu ?
•Penambahandanpenghapusanelemendilakukanpada
elemenlist yang terletakdipaling depan
•Yang dihapusadalahelemenyang paling terakhir
ditambahkan
•Namalain:LIFO (Last In First Out)
•OperasiPOP: Menghapussebuahelemendarisebuah
Putu Putra Astawa
•OperasiPOP: Menghapussebuahelemendarisebuah
stack
POP
12345
bo
tto
m
top
Apakah Stack itu ?
•Penambahandanpenghapusanelemendilakukanpada
elemenlist yang terletakdipaling depan
•Yang dihapusadalahelemenyang paling terakhir
ditambahkan
•Namalain:LIFO (Last In First Out)
Putu Putra Astawa
•Namalain:LIFO (Last In First Out)
•OperasiPOP: Menghapussebuahelemendarisebuah
stack
POP
1234
bo
tto
m
top
Apakah Stack itu ?
•Penambahandanpenghapusanelemendilakukanpada
elemenlist yang terletakdipaling depan
•Yang dihapusadalahelemenyang paling terakhir
ditambahkan
•Namalain:LIFO (Last In First Out)
Putu Putra Astawa
•Namalain:LIFO (Last In First Out)
•OperasiPOP: Menghapussebuahelemendarisebuah
stack
POP
123
bo
tto
m
top
Apakah Stack itu ?
•Penambahandanpenghapusanelemendilakukanpada
elemenlist yang terletakdipaling depan
•Yang dihapusadalahelemenyang paling terakhir
ditambahkan
•Namalain:LIFO (Last In First Out)
Putu Putra Astawa
•Namalain
LIFO (Last In First Out)
•OperasiPOP: Menghapussebuahelemendarisebuah
stack
POP
12
bo
tto
m
top
Apakah Stack itu ?
•Penambahandanpenghapusanelemendilakukanpada
elemenlist yang terletakdipaling depan
•Yang dihapusadalahelemenyang paling terakhir
ditambahkan
•Namalain:LIFO (Last In First Out)
•OperasiPOP: Menghapussebuahelemendarisebuah
Putu Putra Astawa
•OperasiPOP: Menghapussebuahelemendarisebuah
stack
POP
1to
p=
=b
ott
om
Apakah Stack itu ?
Putu Putra Astawa
PUSH
dan
POP
Stack Overflow & Stack Underflow
•Stack Overflow
Menambahkandata padasebuahstack yang telahpenuh
•Stack Underflow
Putu Putra Astawa
•Stack Underflow
Menghapusdata darisebuahstack yang sudahkosong
Operasi Stack
4 3 2 1
1 2 3 4
O U T
I N
Putu Putra Astawa
•Push : digunakan untuk menambah item pada stack pada tumpukan
paling atas
•Pop :digunakan untuk mengambil item pada stack pada tumpukan paling
atas
•Clear :digunakan untuk mengosongkan stack
•IsEmpty :fungsi yang digunakan untuk mengecek apakah stack sudah
kosong
•IsFull :fungsi yang digunakan untuk mengecek apakah stack sudah penuh
14
Stack w
ith Array of Struct
•Definisikan Stackdengan menggunakan suatu struct
•Definisikan konstanta MAX_STACKuntuk
menyimpan maksimum isi stack
•Elemen struct Stack adalah array datadan top untuk
Putu Putra Astawa
•Elemen struct Stack adalah array datadan top untuk
menadakan posisi data teratas
•Buatlah variabel tumpuksebagai implementasi dari
struct Stack
•Deklarasikan operasi-operasi/function di atas dan buat
implemetasinya
Program Stack
•intstk[10];
•inttop;
Putu Putra Astawa
Program Stack (2)
Inisialisasi Stack
•Pada mulanya isi topdengan -1, karena array dalam
bahasa C dimulai dari 0, yang berarti bahwa data stack
Putu Putra Astawa
adalah KOSONG!
•Topadalah suatu variabel penanda dalam Stack yang
menunjukkan elemen teratas data Stack sekarang. Top
Of Stackakan selalu bergerak hingga mencapai MAX of
STACK yang menyebabkan stack PENUH!
Program Stack (2)
// inisialisasistack
stack()
Putu Putra Astawa
Ilustrasi Stack pada saat inisialisasi!
stack()
{top=-1;
}
Program Stack (3)
Fungsi IsFull
•Untuk memeriksa apakah stack sudah penuh?
•Dengan cara memeriksa top of stack, jika sudah sama
dengan MAX_STACK-1 maka full, jika belum (masih
Putu Putra Astawa
dengan MAX_STACK-1 maka full, jika belum (masih
lebih kecildari MAX_STACK-1) maka belum full
Program Stack (4)
•IlustrasiStack padakondisiFull
// fungsipenambahanelemenstack
Putu Putra Astawa
// fungsipenambahanelemenstack
void push(intx)
{if(top > 9)
{cout<<"stack over flow";
return;
}stk[++top]=x;
cout<<"Elemenstack : " <<x
<<endl;}
Program Stack (5)
Fungsi IsEmpty
•Untuk memeriksa apakah data Stack masih kosong?
•Dengan cara memeriksa top of stack, jika masih -1 maka berarti
data Stack masih kosong!
Putu Putra Astawa
data Stack masih kosong!
//fungsimenampilkanelemenstack
void display()
{if(top<0)
{cout<<" stack Kosong"<<endl;
return;
} for(inti=top;i>=0;i--)
cout<<stk[i] <<" " << endl;
}
Program Stack (6)
Fungsi Push
•Untuk memasukkan elemen ke data Stack. Data yang
diinputkan selalumenjadi elemen teratas Stack (yang
ditunjuk oleh ToS)
Putu Putra Astawa
ditunjuk oleh ToS)
•Jika data belum penuh,
▫Tambah satu (increment) nilai top of stacklebih
dahulu setiap kali ada penambahan ke dalam array
data Stack.
▫Isikan data baru ke stack berdasarkan indeks top of
stack yang telah di-increment sebelumnya.
•Jikatidak, outputkan“Penuh”
Program Stack (7)
Putu Putra Astawa
//fungsipenghapusanelemenstack
void pop()
{
Putu Putra Astawa
{if(top <0)
{cout<<"stack under flow";
return;
} cout<<"menghapusElemenStack : "
<<stk[top--]<< endl;
}
Program Stack (8)
Fungsi Pop
•Untuk mengambil data Stack yang terletak paling atas
(data yang ditunjuk oleh TOS).
Putu Putra Astawa
•Tampilkan terlebih dahulunilai elemen teratas
stack dengan mengakses indeksnya sesuai dengan top of
stacknya, baru dilakukan di-decrement nilai top of
stacknya sehingga jumlah elemen stack berkurang.
Program Stack (9)
Putu Putra Astawa
//fungsimenampilkanelemenstack
void display()
{if(top<0)
Putu Putra Astawa
if(top<0)
{cout<<" stack Kosong"<<endl;
return;
} for(inti=top;i>=0;i--)
cout<<stk[i] <<" " << endl;
}
Program Stack (10)
•Fungsi Print
•Untuk menampilkan semua elemen-elemen data Stack
•Dengan cara me-loop semua nilai array secara terbalik,
karena kita harus mengakses dari indeks array tertinggi
Putu Putra Astawa
karena kita harus mengakses dari indeks array tertinggi
terlebih dahulu baru ke indeks yang lebih kecil!
Program Stack (11)
Putu Putra Astawa
Putu Putra Astawa