STACK
• Stack atau tumpukan adalah salah satu struktur data di dalam pemrograman
• Bersifat LIFO (Last In First Out) >> objek yang terakhir masuk ke dalam stack, akan dikeluarkan terlebih dahulu dari stack
Contoh :
Operasi – operasi di dalam stack:
Push
Digunakan untuk menambahkan objek pada stack pada posisi paling atas
Pop
Digunakan untuk mengambil objek teratas dari stack
IsEmpty
Digunakan untuk mengecek apakah stack sudah kosong
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
IsFull
Digunakan untuk mengecek apakah stack sudah penuh
Implementasi Stack dengan Menggunakan Array
Deklarasi konstanta dan variabel
myStack : array
topPointer : Top Of Stack >> digunakan sebagai pointer yang menunjukka posisi tumpukan
teratas dari sebuah stack
Const
STACK_SIZE = 100;
Var
myStack : Array[1..STACK_SIZE] of DataItem;
topPointer : Integer;
Procedure InitStack
Digunakan untuk inisialisasi stack
Procedure InitStack;
Begin
topPointer := 0;
End;
Function IsEmpty
Digunakan untuk mengecek apakah stack dalam keadaan kosong atau tidak
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
Function IsEmpty : Boolean;
Begin
IsEmpty := false;
If (topPointer = 0) then
IsEmpty := true;
End;
Function IsFull
Digunakan untuk mengecek apakah stack dalam keadaan penuh atau tidak
Function IsFull : Boolean;
Begin
IsFull := false;
If ((topPointer + 1) = STACK_SIZE) then
IsFull := true;
End;
Function Pop
Digunakan untuk mengambil objek teratas dari sebuah stack
Algoritma:
• Cek apakah stack dalam keadaan kosong atau tidak
• Jika tidak ambil objek teratas dari stack
• Kurangi nilai top of stack
Function Pop : DataItem;
Begin
Pop := nil;
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
If not IsEmpty then
Begin
Pop := myStack[topPointer];
topPointer := topPointer - 1;
End;
End;
Procedure Push
Digunakan untuk memasukkan objek ke dalam stack pada posisi paling atas
Algoritma:
• Cek apakah stack penuh
• Jika stack belum penuh, masukkan objek pada stack dengan indeks top of stack
• Naikkan nilai top of stack
Procedure Push(item : DataItem);
Begin
If not IsFull then
Begin
myStack[topPointer+1] := item;
topPointer := topPointer + 1;
End;
End;
Latihan:
1. Buatlah sebuah program untuk memasukkan data ke dalam stack dan menampilkan
data dari stack
2. Buatlah sebuah program untuk membalik susunan karakter dari suatu string yang
diinputkan oleh user
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
Contoh: bintang kecil >> licek ngatniB
Catatan: Stack diimplementasikan dengan menggunakan array
Implementasi Stack Dengan Menggunakan Pointer
Deklarasi
type
TipeInfo = integer;
TipePtr = ^TipeNode;
TipeNode = record
Info : TipeInfo;
Next : TipePtr;
end;
TipeStack = TipePtr;
Procedure BuatStack
Digunakan pada tahap inisialisasi
procedure BuatStack(var myStack: TipeStack);
begin
New(myStack);
myStack := nil;
end;
Function StackKosong
Digunakan untuk memeriksa, apakah stack dalam keadaan kosong atau tidak
Karena menggunakan pointer, maka stack dianggap kosong jika pointer stack menunjuk ke
nil
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
function StackKosong(myStack: TipeStack): boolean;
begin
StackKosong := (myStack = nil);
end;
Procedure Push
Algoritma:
• Buat Node Baru
• Isi Node Baru dengan Info Baru
• Next Node Baru menunjuk ke Stack
• Stack menunjuk ke Node Baru
procedure Push(var myStack: TipeStack; InfoBaru: TipeInfo);
var
nodeBaru: TipePtr;
begin
new(nodeBaru);
nodeBaru^.Info := InfoBaru;
nodeBaru^.next := myStack;
myStack := nodeBaru;
end;
Function Pop
Algoritma:
• Ambil elemen pada posisi TOP (yang ditunjuk oleh Stack), simpan ke dalam variabel
tertentu, misal Pop
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
• Tunjuk elemen yang akan dihapus dengan variabel pointer yang lain (temp)
• Stack menunjuk Node di bawahnya
• Hapus temp
function Pop(var myStack: TipeStack): TipeInfo;
var
temp: TipePtr;
begin
if not (StackKosong(myStack)) then
begin
Pop := myStack^.Info;
Temp := myStack;
myStack := myStack^.next;
dispose(temp);
end;
end;
Latihan:
1. Buatlah sebuah program untuk memasukkan data ke dalam stack dan menampilkan
data dari stack
2. Buatlah sebuah program untuk membalik susunan karakter dari suatu string yang
diinputkan oleh user
Contoh: bintang kecil >> licek ngatniB
Catatan: Stack diimplementasikan dengan menggunakan pointer
• Stack atau tumpukan adalah salah satu struktur data di dalam pemrograman
• Bersifat LIFO (Last In First Out) >> objek yang terakhir masuk ke dalam stack, akan dikeluarkan terlebih dahulu dari stack
Contoh :
Operasi – operasi di dalam stack:
Push
Digunakan untuk menambahkan objek pada stack pada posisi paling atas
Pop
Digunakan untuk mengambil objek teratas dari stack
IsEmpty
Digunakan untuk mengecek apakah stack sudah kosong
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
IsFull
Digunakan untuk mengecek apakah stack sudah penuh
Implementasi Stack dengan Menggunakan Array
Deklarasi konstanta dan variabel
myStack : array
topPointer : Top Of Stack >> digunakan sebagai pointer yang menunjukka posisi tumpukan
teratas dari sebuah stack
Const
STACK_SIZE = 100;
Var
myStack : Array[1..STACK_SIZE] of DataItem;
topPointer : Integer;
Procedure InitStack
Digunakan untuk inisialisasi stack
Procedure InitStack;
Begin
topPointer := 0;
End;
Function IsEmpty
Digunakan untuk mengecek apakah stack dalam keadaan kosong atau tidak
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
Function IsEmpty : Boolean;
Begin
IsEmpty := false;
If (topPointer = 0) then
IsEmpty := true;
End;
Function IsFull
Digunakan untuk mengecek apakah stack dalam keadaan penuh atau tidak
Function IsFull : Boolean;
Begin
IsFull := false;
If ((topPointer + 1) = STACK_SIZE) then
IsFull := true;
End;
Function Pop
Digunakan untuk mengambil objek teratas dari sebuah stack
Algoritma:
• Cek apakah stack dalam keadaan kosong atau tidak
• Jika tidak ambil objek teratas dari stack
• Kurangi nilai top of stack
Function Pop : DataItem;
Begin
Pop := nil;
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
If not IsEmpty then
Begin
Pop := myStack[topPointer];
topPointer := topPointer - 1;
End;
End;
Procedure Push
Digunakan untuk memasukkan objek ke dalam stack pada posisi paling atas
Algoritma:
• Cek apakah stack penuh
• Jika stack belum penuh, masukkan objek pada stack dengan indeks top of stack
• Naikkan nilai top of stack
Procedure Push(item : DataItem);
Begin
If not IsFull then
Begin
myStack[topPointer+1] := item;
topPointer := topPointer + 1;
End;
End;
Latihan:
1. Buatlah sebuah program untuk memasukkan data ke dalam stack dan menampilkan
data dari stack
2. Buatlah sebuah program untuk membalik susunan karakter dari suatu string yang
diinputkan oleh user
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
Contoh: bintang kecil >> licek ngatniB
Catatan: Stack diimplementasikan dengan menggunakan array
Implementasi Stack Dengan Menggunakan Pointer
Deklarasi
type
TipeInfo = integer;
TipePtr = ^TipeNode;
TipeNode = record
Info : TipeInfo;
Next : TipePtr;
end;
TipeStack = TipePtr;
Procedure BuatStack
Digunakan pada tahap inisialisasi
procedure BuatStack(var myStack: TipeStack);
begin
New(myStack);
myStack := nil;
end;
Function StackKosong
Digunakan untuk memeriksa, apakah stack dalam keadaan kosong atau tidak
Karena menggunakan pointer, maka stack dianggap kosong jika pointer stack menunjuk ke
nil
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
function StackKosong(myStack: TipeStack): boolean;
begin
StackKosong := (myStack = nil);
end;
Procedure Push
Algoritma:
• Buat Node Baru
• Isi Node Baru dengan Info Baru
• Next Node Baru menunjuk ke Stack
• Stack menunjuk ke Node Baru
procedure Push(var myStack: TipeStack; InfoBaru: TipeInfo);
var
nodeBaru: TipePtr;
begin
new(nodeBaru);
nodeBaru^.Info := InfoBaru;
nodeBaru^.next := myStack;
myStack := nodeBaru;
end;
Function Pop
Algoritma:
• Ambil elemen pada posisi TOP (yang ditunjuk oleh Stack), simpan ke dalam variabel
tertentu, misal Pop
Praktikum Struktur Data
Laboratorium Komputer Dasar Ilmu Komputer
Universitas Gadjah Mada
• Tunjuk elemen yang akan dihapus dengan variabel pointer yang lain (temp)
• Stack menunjuk Node di bawahnya
• Hapus temp
function Pop(var myStack: TipeStack): TipeInfo;
var
temp: TipePtr;
begin
if not (StackKosong(myStack)) then
begin
Pop := myStack^.Info;
Temp := myStack;
myStack := myStack^.next;
dispose(temp);
end;
end;
Latihan:
1. Buatlah sebuah program untuk memasukkan data ke dalam stack dan menampilkan
data dari stack
2. Buatlah sebuah program untuk membalik susunan karakter dari suatu string yang
diinputkan oleh user
Contoh: bintang kecil >> licek ngatniB
Catatan: Stack diimplementasikan dengan menggunakan pointer
0 comments:
Post a Comment