Anda di halaman 1dari 15

LAPORAN STACK

Struktur Data

DISUSUN OLEH :

Kelompok 6

Alfina Musdalifah
Arinda Tytha Hudaivi Nasution
Dewi
Dina Mahlupi

Dosen Pengampu : Tri Handayani MT

Program Studi Teknik Informatika


SEKOLAH TINGGI TEKNOLOGI DUMAI
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.

Dumai, 25 Mei 2021

Penulis
BAB I PENDAHULUAN

A. Latarbelakang

Dengan adanya kemajuan Tekhnologi di dunia ini akal pikiran manusia


semakin mahir dalam menciptakan sesuatu yang bermanfaat bagi kehidupan
mereka, salah satunya dalam pembuatan program – program yang sangat membantu
mereka dalam menyelesaikan pekerjaan mereka dengan cepat, baik dan memuaskan,
maka dari itu penulis menyusun makalah mengenai stack merupakan salah satu
bagian dari kemajuan zaman yang betul betul terlihat manfaatnya. Stack bisa juga
disebut sebagai salah satu program yang terlahir dari dunia tekhnologi lewat pola
pikir manusia yang bermanfaat untuk menyelesaikan suatupenghitungan.

B. Maksud danTujuan

Maksud dan tujuan penyusun dalam penyusunan makalah ini sebagi


penambah informasi bagi penyusun yang di outputkan lewat tulisan tulisan yang
terdapat pada makalah ini dan berharap penyusun memberikan informasi
dipenyusunan makalah ini yang isinya tentang stack yang sangat jelas bagi
pembaca. Dengan mengetahui tentang stack maka penyusun maupun pembaca dapat
menambah pengetahuan ilmu yang menyangkut dalam dunia tekhnologi
pemograman.

C. RumusanMasalah

Berdasarkan latar belakang yang kami angkat, kami menemukan beberapa


permasalahan yang kiranya akan menjadi bahasan pada penulisan makalah ini,
diantaranya yaitu :
1. Apa Pengertian dariStack?
2. Bagaimana penjelasan tentang materi Stack?

D. Metode Penulisan

Metode penulisan untuk pembuatan makalah ini penulis menggunakan


metode informasi yang diambil atau didapat dari metode pengetahuan penulis yang
didapat dari pembelajaran penulis dalam ruang lingkup perkuliahan dan internet.
BAB II PEMBAHASAN

A. PENGERTIAN Stack(tumpukan)
Stack (tumpukan) adalah list linier yang dikenali elemen puncaknya (TOP).
Aturan penyisipan dan penghapusan elemennya tertentu, yaitu :

 penyisipan selalu dilakukan “di atas” TOP


 penghapusan selalu dilakukan padaTOP

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 :

Stack digunakan untuk merepresentasikan :

 pemanggilan prosedur
 perhitungan ekspresi aritmatika
 rekursivitas
 backtracking
 dan algoritma lanjutlainnya
Representasi Lojik

Stack direpresentasikan secara lojik sebagai list linier dengan setiap elemennya
adalah :

typedef struct TElmtStack


{ InfoType
Info; address
Next;

InfoType adalah sebuah tipe terdefinisi yang menentukan informasi yang


disimpan pada setiap elemen stack. Address adalah “alamat” dari elemen.

Jika P adalah sebuah address, maka terdapat selektor sebagai berikut :

 Info(P) adalah informasi yang disimpan pada alamatP


 Next(P) adalah alamat suksesorP

Stack kosong adalah stack dengan Top = NIL


Operasi dan Fungsi Dasar

1. IsStackEmpty

int IsStackEmpty(address Top)


{ /* Test stack kosong : mengirim 1 jika stack kosong, dan 0
jika stack tidak kosong */

return(Top == NIL);
}

1. CreateEmptyStack
void CreateEmptyStack(address *Top)
{ /* I.S. sembarang
F.S. sebuah stack yang kosong siap dipakai,

terdefinisi Membuat stack kosong */

*Top = NIL;
}

2. Push
void Push(address *Top, InfoType X)
{ /* I.S. Stack mungkin kosong, X terdefinisi (terdefinisi informasinya)
F.S. Info(Top) = X

Menambahkan sebuah elemen X pada TOP sebuah stack */ address P;


// Alokasi P; dimana Info(P) = X

Next(P) = *Top; // insert sebagai elemen pertama


*Top = P;
}

3. Pop
void Pop(address *Top, InfoType *X)
{ /* I.S. Stack tidak kosong
F.S. X adalah info dari elemen TOP

Menghapus elemen stack yang tidak kosong, stack mungkin menjadi


Kosong */
addressP;

P =*Top;
*Top =
Next(P);
Next(P) = NIL;

*X =Info(P);
// DealokasiP

Operasi Dasar pada Stack

Operasi yang sering diterapkan pada struktur data stack adalah Push dan Pop. Operasi
dasar yang dapat diterapkan adalah sebagai berikut:

a. CREATESTACK(S) : Membuat stack S, dengan jumlah


elemenkosong
b. MAKENULL (S) : Mengosongkan stack S, jika ada elemen maka semua
elemendihapus
c. EMPTY : Stack kosong ? menguji apakah stackkosong.
d. PUS (x,S) : memasukkan elemen baru x kedalam stack S
e. POP (S) : mengeluarkan elemen posisi atas pada stack S Ilustrasi operasi POP dan
PUSH terhadapstack.

OPERASI ISI STACK NILAI TOP


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
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.

Algoritma PUSH: PUSH(S,TOP,MAKSTUM,ELEMEN)


1. [periksa kandungan stack, apakah penuh ?]
jika TOP = MAKSTUM, cetak‘OVERFLOW’

2. [tambahkan TOP dengan


1] TOP:=TOP +1

3. [Masukkan ELEMEN kedalam lokasi TOP yang


baru] S[TOP]:=ELEMEN

4. RETURN

Algoritma POP: POP(S,TOP,MAKSTUM,ELEMEN)


1. [periksa kandungan stack, apakah kosong
?] jika TOP = 0, cetak‘UNDERFLOW’

2. [simpan nilai teratas pada


ELEMEN] ELEMEN:=S[TOP]

3. [keluarkan TOP dengan


1] TOP:=TOP -1

4. RETURN

Representasi Stack (Penerapan Stack)

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

Fungsi/prosedur rekursif adalah fungsi atau prosedur yang memanggil dirinya


sendiri, sebagai contoh adalah faktorial/ pemanggilan terhadap dirinya sendiri,
menyebabkan fungsi melakukan proses pengulangan (looping). Agar pengulangan tidak
terjadi terus menerus, maka harus ada kondisi yang menyebabkan proses pengulangan
berhenti. Kondisi ini disebut sebagai base. Dengan demikian badan fungsi akan dibagi
menjadi dua bagian, yaitu:

 Base : kondisi berhenti

• Recuuence : proses pengulangan (pemanggilan dirinya


sendiri)

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

(n-1) ! = (n-1) * (n-2)!

dan (n-2) ! = (n-2) * (n=3)!


Fungsi ekusif untuk mencari nilai faktorial, dimana fungsi matematis untuk
mencari nilai faktorial adalah sebagai berikut :

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

Anda mungkin juga menyukai