Struktur Data Kelompok 6
Struktur Data Kelompok 6
Struktur Data
DISUSUN OLEH :
Kelompok 6
1. Alfina Musdalifah
2. Arinda Tytha Hudaivi Nasution
3. Dewi
4. Dina Mahlupi
1
KATA PENGANTAR
Puji dan syukur penulis panjatkan kehadirat Allah SWT yang Maha pengasih
dan lagi maha penyayang yang telah memberikan nikmat-Nya sehingga penulis dapat
menyusun dan menyelesaikan laporan sebagai tugas kelompok Struktur Data yang
berjudul “MAKALAH STACK ( TUMPUKAN ).
Penulis menyadari bahwa dalam penulisan karya tulis ini masih banyak
kekurangan nya. Oleh karena itu , penulis mengharapkan kritik dan saran yang sifatnya
konstruktif untuk menyempurnakan makalah ini kelak di masa yang akan datang dan
penulis berharap semoga makalah ini dapat bermanfaat bagi kita semua.
Penulis
1
BAB I PENDAHULUAN
A. Latarbelakang
B. Maksud danTujuan
C. RumusanMasalah
D. Metode Penulisan
1
BAB II PEMBAHASAN
A. PENGERTIAN Stack(tumpukan)
Stack (tumpukan) adalah list linier yang dikenali elemen puncaknya (TOP).
Aturan penyisipan dan penghapusan elemennya tertentu, yaitu :
TOP adalah satu-satunya alamat tempat terjadi operasi. Dengan kata lain, elemen
yang ditambahkan paling akhir akan menjadi elemen yang pertama dihapus (LIFO
/ Last In First Out). Perhatikan gambar berikut ini :
• pemanggilanprosedur
• perhitungan ekspresiaritmatika
• rekursivitas
• backtracking
• dan algoritma lanjutlainnya
1
Representasi Lojik
Stack direpresentasikan secara lojik sebagai list linier dengan setiap elemennya
adalah :
1
Operasi dan Fungsi Dasar
1. IsStackEmpty
return(Top == NIL);
}
1.CreateEmptyStack
void CreateEmptyStack(address *Top)
{ /* I.S. sembarang
F.S. sebuah stack yang kosong siap dipakai, terdefinisi
*Top = NIL;
}
2. Push
void Push(address *Top, InfoType X)
{ /* I.S. Stack mungkin kosong, X terdefinisi
(terdefinisi informasinya)
F.S. Info(Top) = X
address P;
3. Pop
void Pop(address *Top, InfoType *X)
{ /* I.S. Stack tidak kosong
F.S. X adalah info dari elemen TOP
1
addressP;
P =*Top;
*Top = Next(P);
Next(P) = NIL;
*X =Info(P);
// DealokasiP
}
Operasi yang sering diterapkan pada struktur data stack adalah Push dan Pop. Operasi
dasar yang dapat diterapkan adalah sebagai berikut:
1 CREATESTACK(S) :<kosong> 0
2 PUSH(’a’,S) :a 1
3 PUSH(’b’,S) :a b 2
4 PUSH(’c’,S) :a b c 3
5 POP (S) :a b 2
6 PUSH(’d’,S) :a b d 3
7 PUSH(’e’,S) :a b d e 4
8 POP (S) :a b d 3
1
9 POP (S) :a b 2
10 POP (S) :a 1
Apa yang terjadi bila dilakukan POP (Sebanyak dua kali lagi ? Underflow. Artinya stack
kosong tidak ada elemen yang dapat diambil. Apa yang terjadi jika dilakukan PUSH (’x’S)
sebanyak sepuluh kali, jika kapasitas stack 5 lagi ? Overflow, artinya stack penuh tidak ada
elemen yang dapat dimasukkan kedalamstack.
Pada proses PUSH, stack harus diperiksa apakah jumlah elemen sudah mencapai
maksimum atau tidak. Jika sudah mencapai maksimum maka OVERFLOW. Sedangkan
pada proses POP, stack harus diperiksa apakah ada elemen yang hendak dikeluarkan atau
tidak. Jika tidak ada maka UNDERFLOW.
4. RETURN
4. RETURN
Stack bisa dinyatakan dalam bentuk list atau array, biasanya dalam bentuk array stack.
Pointer TOP yang menyatakan lokasi elemen TOP dari stack dan variabel.
MAXSTX yang menyatakan banyaknya elemen maximum yang bisa ditampung stack.
Keadaan TOP=0 (null) menyatakan stack kosong.
6 = MAXSTK
X Y Z
1 2 3 4 5 6
1
3 = TOP
TOP = 3 →Stack mempunyai 3 elemen
Maxstk = 8
Untuk menambah satu elemen ke stack, harus dicek apakah masih ada ruang kosong atau
tidak, jika tidak ada maka akan oferflow, untuk mengambil satu elemen dari stack harus
dicek apakah stack mempunyai elemen atau tidak, jika stack kosong maka stack
Underflow.
Rekursif
1
▪ Recuuence : proses pengulangan (pemanggilan dirinyasendiri)
Dalam perhitungan matematis diperlihatkan contoh berikut:
Fungsi ekusif untuk mencari nilai faktorial, dimana fungsi matematis untuk
mencari nilai faktorial adalah sebagai berikut :
n! = n * (n-1)*(n-2)*…*3*2*1
n!=n*(n-1) !
Dengan
Tanpa Rekursif
Fact :=1;
For i := 1 to n do
Fact :=Fact* i ;
End
Dengan Rekursif
Function fact(n:integer):integer
Begin
Fact:=1
Else
Fact:= n*fac(n-1);
End
1
a. ContohProgram
Program pencarian ;
Uses crt;
Label 1;
Var
L:array [1..100] of integer;
Bil,I,n:integer;
ul:char;
procedure tampil;
begin
write (‘masukan banyak data:’); readln (n);
for i:=1 to n do
begin
write (‘data [‘,I,’] :’);readln (L [i]);
end;
end;
procedure seq_search;
begin
write (‘angka yang akan di cari:’);readln (bil);
i :=1;
while (I <n) and (L[i] <> bil) do
begin
i:=i+1;
end;
if (L[i]=bil)then
writeln (‘ditemukan pada elemen larik ke’,i)
else
1
writeln (‘tidak ditemukan’);
end;
begin
1:
Clrscr;
Writeln(‘-------------------------------------------------------- ’);
Writeln (‘------ PROGRAMPENCARIANANGKA ----- ‘);
Writeln(‘ ‘);
Tampil;
Seq_search;
Writeln ;
Delay (3000);
Write (‘apakah anda ingin mengulangi [Y/T] ? : ‘);readln (ul);
If (ul =’Y’) or (ul =’y’) then
Goto 1 ;
Readkey;
End.
1
Program
Hasil Run
1
BAB III PENUTUP
A. 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 :
o True jika stack tersebut kosong atau dapat dikatakan NOEL(S) =0.
o False jika stack tersebut tidak dalam kondisi kosong atau dapat dikatakan
NOEL(S)
o Push(Stack,Elemen)
o
B. Saran
Penggunaan stack pada struktur data sangat bermanfaat untuk
para pemrogram untuk melakukan suatu pemakain dalam informatika misalnya
untuk meresenpetasi pemanggilan prosedur, perhitungan ekspresi aritmatika,
rekursifitas, backtracking. Gunakan stack pada program yang operasinya selalu
dilakukan pada elemen yang paling atas.
1
DAFTAR PUSTAKA
1. https://www.google.co.id/search?biw=1366&bih=609&ei=oZbeWp7xIYO0vwSqsq
aoCg&q=bab+iii+struktur+data+stack+doc+word&oq=bab+iii+struktur+data+stack
+doc+word&gs_l=psy-
ab.3...2048339.2051238.0.2051912.6.6.0.0.0.0.74.416.6.6.0....0...1c.1.64.psy-
ab..0.0.0. .. 0.3ocXxZkGGrc#
2. Setiawan,Suryana. 2004. STRUKTUR DATA & ALGORITME,Jakarta
3. www.wikipedia.org