Membuat Program LIFO Dengan Pascal
LIFO (Last In, First Out) adalah konsep tumpukan (stack) di mana elemen terakhir yang dimasukkan akan menjadi elemen pertama yang dikeluarkan. Prinsip ini sering digunakan dalam berbagai aplikasi, seperti pengelolaan fungsi rekursif, undo operation di perangkat lunak, atau pemrograman berbasis tumpukan (stack-based programming).
Di Pascal, LIFO dapat diimplementasikan menggunakan array atau pointer. Artikel ini menggunakan array untuk implementasi dasar LIFO.
Konsep LIFO
Operasi dasar LIFO meliputi:
- Push: Menambahkan elemen ke tumpukan.
- Pop: Menghapus elemen dari tumpukan.
- Peek (Top): Melihat elemen teratas tumpukan.
- Display: Menampilkan semua elemen dalam tumpukan.
Pada implementasi ini, tumpukan memiliki kapasitas maksimal yang perlu dijaga untuk mencegah overflow (tumpukan penuh) atau underflow (tumpukan kosong).
Contoh Program LIFO di Pascal
Berikut adalah implementasi program LIFO sederhana menggunakan Pascal:
program LIFOStack;
uses crt;
const
MAX = 5; // Kapasitas maksimum tumpukan
type
Stack = record
data: array[1..MAX] of integer;
top: integer;
end;
var
s: Stack;
// Inisialisasi tumpukan
procedure InitializeStack(var s: Stack);
begin
s.top := 0;
end;
// Mengecek apakah tumpukan kosong
function IsEmpty(s: Stack): boolean;
begin
IsEmpty := s.top = 0;
end;
// Mengecek apakah tumpukan penuh
function IsFull(s: Stack): boolean;
begin
IsFull := s.top = MAX;
end;
// Menambahkan elemen ke tumpukan (Push)
procedure Push(var s: Stack; value: integer);
begin
if IsFull(s) then
writeln('Tumpukan penuh! Tidak dapat menambahkan elemen.')
else
begin
s.top := s.top + 1;
s.data[s.top] := value;
writeln('Data ', value, ' berhasil ditambahkan ke tumpukan.');
end;
end;
// Menghapus elemen dari tumpukan (Pop)
procedure Pop(var s: Stack);
var
removedValue: integer;
begin
if IsEmpty(s) then
writeln('Tumpukan kosong! Tidak ada elemen untuk dihapus.')
else
begin
removedValue := s.data[s.top];
writeln('Data ', removedValue, ' berhasil dihapus dari tumpukan.');
s.top := s.top - 1;
end;
end;
// Melihat elemen teratas tumpukan (Peek)
procedure Peek(s: Stack);
begin
if IsEmpty(s) then
writeln('Tumpukan kosong! Tidak ada elemen di atas.')
else
writeln('Elemen teratas: ', s.data[s.top]);
end;
// Menampilkan semua elemen dalam tumpukan
procedure DisplayStack(s: Stack);
var
i: integer;
begin
if IsEmpty(s) then
writeln('Tumpukan kosong!')
else
begin
writeln('Isi tumpukan (dari atas ke bawah):');
for i := s.top downto 1 do
writeln(s.data[i]);
end;
end;
var
choice, value: integer;
begin
clrscr;
InitializeStack(s);
repeat
writeln('=== Program LIFO dengan Pascal ===');
writeln('1. Tambah Data (Push)');
writeln('2. Hapus Data (Pop)');
writeln('3. Lihat Elemen Teratas (Peek)');
writeln('4. Tampilkan Semua Elemen');
writeln('5. Keluar');
write('Pilih menu: '); readln(choice);
case choice of
1: begin
write('Masukkan data: '); readln(value);
Push(s, value);
end;
2: Pop(s);
3: Peek(s);
4: DisplayStack(s);
5: writeln('Keluar dari program...');
else
writeln('Pilihan tidak valid!');
end;
writeln; // Baris kosong untuk estetika
until choice = 5;
end.
Penjelasan Program
-
Deklarasi Record Stack
Tipe dataStack
adalah record yang berisi:- Array
data
untuk menyimpan elemen tumpukan. - Variabel
top
untuk melacak posisi elemen teratas.
- Array
-
Operasi LIFO
- Push: Menambahkan elemen ke posisi berikutnya di
top
. - Pop: Menghapus elemen dari posisi
top
. - Peek: Menampilkan elemen di posisi
top
tanpa menghapusnya. - Display: Menampilkan semua elemen dari
top
hingga elemen pertama.
- Push: Menambahkan elemen ke posisi berikutnya di
-
Pengecekan Penuh atau Kosong
IsEmpty
mengembalikantrue
jikatop = 0
.IsFull
mengembalikantrue
jikatop = MAX
.
-
Menu Utama
Program memiliki menu interaktif untuk memilih operasi seperti Push, Pop, Peek, atau menampilkan elemen dalam tumpukan.
Contoh Output Program
Input:
Pilih menu: 1
Masukkan data: 10
Pilih menu: 1
Masukkan data: 20
Pilih menu: 4
Output:
Data 10 berhasil ditambahkan ke tumpukan.
Data 20 berhasil ditambahkan ke tumpukan.
Isi tumpukan (dari atas ke bawah):
20
10
Input:
Pilih menu: 3
Pilih menu: 2
Pilih menu: 4
Output:
Elemen teratas: 20
Data 20 berhasil dihapus dari tumpukan.
Isi tumpukan (dari atas ke bawah):
10
Kesimpulan
Program LIFO di atas adalah implementasi dasar dengan array menggunakan Pascal. Anda dapat memperluas program ini dengan:
- Menggunakan pointer untuk membuat tumpukan dinamis.
- Menambahkan fitur seperti pencarian elemen tertentu di dalam tumpukan.
- Mengintegrasikan LIFO ke dalam aplikasi yang lebih besar.
Latihan seperti ini membantu memahami konsep dasar struktur data stack dan penerapannya dalam pemrograman.