Anda di halaman 1dari 3

MODUL PRAKTUKUM ALGORITMA DAN STRUKTUR DATA

IMPLEMENTASI STACK MENGGUNAKAN SINGLE LINKED


LIST

Stack adalah tempat penyimpanan yang mempunyai sifat LIFO (Last In First Out).
Jika digambarkan maka ilustrasinya adalah seperti berikut:
A B C D E Masuk
Keluar
Program dengan struktur data stack biasanya mempunyai fungsi-fungsi:
1. Inisialisasi.
2. Full (untuk mengecek apakah stack penuh)
3. Empty (untuk mengecek apakah stack kosong)
4. Clear (untuk mengosongkan stack)
5. Push (menambah data ke dalam stack)
6. Pop (mengeluarkan data teratas dari stack)

Untuk memudahkan pemahaman, perhatikan dan cobalah program stack


menggunakan ”struct” seperti contoh berikut:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

struct biodata {
char nama[20];
int usia;
struct biodata *LINK;
};
struct biodata data;
struct biodata *P, *TOP, *Q;

void init(void);
void buat_simpul(void);
void push(void);
struct biodata pop(void);
void display(struct biodata data);

main() {
char pilih;
cout <<"== Program Entri Data Mahasiswa ==\n";
init();
do {
cout << "MENU PILIHAN :\n";
cout << "1. Input Data\n";
cout << "2. Hapus Data Terakhir\n";
cout << "3. Lihat Daftar Mahasiswa\n";
cout << "4. Hapus Semua Data\n";
cout << "5. Selesai.\n";
cout << "Pilih 1 sd 5 : ";
cin >> pilih;

1
switch(pilih) {
case '1' : buat_simpul();
push();
break;
case '2' : cout << "\nData yang dihapus : \n";
data = pop();
display(data);
break;
case '3' : cout << "\nSilahkan dibuat sendiri ya..\n\n";
break;
case '4' : init();
cout << "\nData telah dikosongkan\n";
break;
case '5' : break;
default : cout << "Pilih 1 sd 5!";
break;
}
cout << "\n";
}while(pilih != '5');
}

void init(void) {
TOP = NULL;
}

void buat_simpul(void) {
P = new biodata;
if(P != NULL) {
cout <<"\n";
cout <<"Masukkan Nama : ";cin >> P->nama;
cout <<"Masukkan Usia : ";cin >> P->usia;
}else {
cout <<"Pembuatan biodata gagal!";
exit(1);
}
}

void push(void) {
if(TOP == NULL) {
TOP = P;
TOP->LINK = NULL;
}else{
P->LINK = TOP;
TOP = P;
}
}

struct biodata pop(void) {


struct biodata data;
if(TOP != NULL) {
data = *TOP;
Q = TOP->LINK;
free(TOP);
TOP = Q;
return(data);
}else{
cout <<"Stack Kosong";
}
}

void display(struct biodata data) {

2
cout <<"\n";
cout <<"Nama : " << data.nama << "\n";
cout <<"Usia : " << data.usia;
}

Tugas Latihan
Buat program pengolahan data karyawan (nama, alamat, tgl_lahir, telp) menggunakan struktur
data stack dengan single linked list. Tambahkan fungsi untuk membaca semua data.

Format Laporan
Hasil dilaporkan dalam bentuk file .pdf berisi:

Nim
Nama
Source code Tugas.
Screenshot Tugas.

Anda mungkin juga menyukai