Struktur Data
DISUSUN OLEH :
Kelompok 6
Alfina Musdalifah
Arinda Tytha Hudaivi Nasution
Dewi
Dina Mahlupi
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
BAB I PENDAHULUAN
A. Latarbelakang
B. Maksud danTujuan
C. RumusanMasalah
D. Metode Penulisan
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 :
pemanggilan prosedur
perhitungan ekspresi aritmatika
rekursivitas
backtracking
dan algoritma lanjutlainnya
Representasi Lojik
Stack direpresentasikan secara lojik sebagai list linier dengan setiap elemennya
adalah :
1. IsStackEmpty
return(Top == NIL);
}
1. CreateEmptyStack
void CreateEmptyStack(address *Top)
{ /* I.S. sembarang
F.S. sebuah stack yang kosong siap dipakai,
*Top = NIL;
}
2. Push
void Push(address *Top, InfoType X)
{ /* I.S. Stack mungkin kosong, X terdefinisi (terdefinisi informasinya)
F.S. Info(Top) = X
3. Pop
void Pop(address *Top, InfoType *X)
{ /* I.S. Stack tidak kosong
F.S. X adalah info dari elemen TOP
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:
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
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
n! = n * (n-1)*(n-2)*…*3*2*1
n!=n*(n-1) !
Dengan
Terlihat bahwa fungsi ini akan melakukan proses pengulangan (n-x) !, dengan nilai x
selalu berkurang 1 dan baru akan berhenti bila (n-x)=1.
Tanpa Rekursif
Fact :=1;
For i := 1 to n do
Fact :=Fact* i
End
Dengan Rekursif
Function
fact(n:integer):integer Begin
If(n=0) or(n=1)
then Fact:=1
Else
Fact:= n*fac(n-
1); End
Prinsipnya rekursip adalah proses yang memanggil dirinya sendiri dengan parameter
yang berbeda sampai pengulangan berhenti.
Contoh Program
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int i;
int n;
int cari,ketemu=0;
int A[100];
cout<<"PROGRAM SEARCHING LINIER\n";
cout<<"--------------------------"<<endl;
cout<<"Masukan Banyak Data : ";
cin>>n;
cout<<endl;
for (i=1;i<=n;i++)
{
cout<<"Masukan Data Ke-"<<i<<" : ";
cin>>A[i];
}
cout<<endl;
cout<<"Input Bilangan yang dicari : ";
cin>>cari;
cout<<"--------------------------"<<endl;
cout<<endl;
for(i=0;i<=n;i++)
{
if (A[i]==cari)
{
ketemu=1;
cout<<"Data Ditemukan Pada Indeks Ke-"<<i;
}
}
if (ketemu==0)
{
cout<<"Data tidak ditemukan";
}
getch();
}
Program
Hasil Run
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.
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.
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