Algoritma Pemrograman14
Algoritma Pemrograman14
Modul 14:
Stack (Tumpukan) dan
Queue (Antrian)
Tumpukan (Stack)
Struktur Tumpukan (Stack) adalah struktur data yang
meniru bagaimana proses menyimpan dan mengambil
satu benda pada suatu tumpukan benda yang ada dilantai.
Apabila diperhatikan dengan saksama maka proses
menyimpan buku (disebut push) dan proses mengambil
buku (disebut pop) dari suatu tumpukan selalu dilakukan
pada bagian atas tumpukan (top of the stack).
Sehingga terjadi urutan yang disebut LIFO (Last In First
Out), artinya benda yang terakhir disimpan pada
tumpukan adalah benda yang pertama yang bisa diambil
karena benda inilah yang berada pada urutan teratas dari
tumpukan.
9/10/2014 Algoritma Pemrograman, @SUARGA 2
9/10/2014 Algoritma Pemrograman, @SUARGA 3
Tumpukan (Stack) digunakan apabila data akan di-akses dengan
urutan LIFO. Struktur data Stack dapat di-implementasi dengan
menggunakan larik (array), dengan tipe data bentukan (record)
misalnya sebagai berikut:
Type Stack : record
< top: integer;
isi : array[1 .. maks] of item;
>
dimana: top adalah penunjuk posisi teratas dari tumpukan, bila stack
kosong top=0, bila penuh top=maks, setiap mengisi data top
bertambah 1, setiap mengambi data top berkurang 1
isi adalah array yang memuat data dalam tumpukan
item adalah tipe data yang disimpan dalam stack,
bisa int, char, dsb
9/10/2014 Algoritma Pemrograman, @SUARGA 4
9/10/2014 Algoritma Pemrograman, @SUARGA 5
• Prosedur push (input x : item; in-out S : Stack)
• { prosedur menempatkan item pada posisi top dari stack }
•
• Definisi Variabel
• int atas;
•
• Rincian Langkah
• If S.top = maks
• then write (“sudah penuh”);
• else
• S.top S.top + 1;
• atas S.top;
• S.isi[atas] x;
• endif.
struct Stack {
int top;
char isi[25];
};
9/10/2014 Algoritma Pemrograman, @SUARGA 12
• Variabel dari suatu struct di-definisikan
seakan-akan struct merupakan tipe data baru,
misalnya: Stack S;
• Kemudian variabel yang ada dalam struct
dapat diakses sebagai member dari struct,
(memakai titik) misalnya:
S.top = S.top + 1;
S.isi[S.top] = x;
if (S.top == maks)
cout << "Stack Penuh" << endl;
else {
S.top += 1;
atas = S.top;
S.isi[atas] = x;
}
}
9/10/2014 Algoritma Pemrograman, @SUARGA 15
void pop(char &x, Stack &S) {
int atas;
if (S.top == -1)
cout << "Stack Kosong " << endl;
else {
atas = S.top;
x = S.isi[atas];
S.top = S.top - 1;
}
}
9/10/2014 Algoritma Pemrograman, @SUARGA 16
bool isEmpty(Stack S) {
if (S.top == -1)
return true;
else
return false;
}
char peeks(Stack S) {
char x;
int atas;
atas = S.top;
x = S.isi[atas];
return x;
}9/10/2014 Algoritma Pemrograman, @SUARGA 17
//myStack.cpp
#include <iostream>
#include <cstring>
using namespace std;
struct Stack {
int top;
char isi[80];
};
int maks=80;
int main() {
char masukan[80];
inisial(S);
cout << "Masukkan satu kalimat : ";
cin.getline(masukan,80);
i=0;
while (masukan[i] != '\0') {
x = masukan[i];
push(x, S);
i++;
}
system("PAUSE");
return 0;
}
rear front
B A
int maks=80;
struct Queue {
int count;
int front, rear;
char isi[80];
};
char masukan[maks];
Queue Q;
int i;
char x;
initialize(Q);
cout << "Masukkan satu kalimat : ";
cin.getline(masukan,maks);
i=0;
while (masukan[i] != '\0') {
x = masukan[i];
addQueue(x, Q);
i++;
}
system("PAUSE");
return 0;
}