Anda di halaman 1dari 4

Nama : Hilda Afifah

Npm : 22001053007
Prodi : Teknik Elektro
Laporan Tugas 2 Struktur Data (STACK)
#include <iostream>
#define MAX 5
 
using namespace std;

1. Preprocessor dan Headerfile


Disini hanya menggunakan dua baris preprocessor untuk mendefinisikan header file
iostream untuk standar input/output stream dan MAX untuk maksimum data array pada
stack/tumpukan

struct Stack {
int atas, data[MAX];
} tumpuk;

2.Struct Data
Pada struct mendeklarasikan top(atas) untuk menunjukkan data teratas pada
tumpukan dan array data [] dengan jumlah array dari data maksimum yang telah didefiniskan
sebelumnya yaitu MAX

void init() {
tumpuk.atas = -1;
}

3. Inisialisasi nilai top


Untuk memastikan penunjuk (top) berada pada posisi indeks ke 0 pada saat
menambahkan data ketumpukan maka disini perlu diberikan nilai awal yaitu -1.
 
bool isEmpty() {
return tumpuk.atas == -1;
}
 
bool isFull() {
return tumpuk.atas == MAX - 1;
}

4. Memeriksa Tumpukan
Kedua fungsi ini digunakan untuk memeriksa apakah tumpukan penuh isFull()
(fungsi pertama) dan tumpukan kosong isEmpty(), keduanya mengembalikan nilai Boolean,
jadi cukup mengembalikan nilai perbandingan pada fungsi masing-masing.
 Pada fungsi isEmpty()akan mengembalikan nilai true jika tumpuk.atas sama dengan -
1 atau false jika tidak sama.
 Pada fungsi isFull() akan mengembalikan nilai true jika nilai tumpuk.atas sama
dengan maksimum data array yang telah ditentukan dikurang satu MAX-1 atau false
jika tidak sama.
 
void clear(){
tumpuk.atas = -1;
cout <<"Tumpukan data sudah kosong" << endl;
}

5. Mengosongkan Tumpukan
Fungsi yang digunakan untuk mengosongkan stack dengan cara mengeset Top
dengan - 1. Jika Top bernilai kurang dari nol maka stack dianggap kosong
 
void push() {
if (isFull()) {
cout << "\nTumpukan penuh" << endl;
}
else {
tumpuk.atas++;
cout<< "\nMasukkan data = ";
cin >> tumpuk.data[tumpuk.atas];
cout<< "Data " << tumpuk.data[tumpuk.atas] << " masuk ke stack"
<< endl;
}
}

6. Menambahkan Data ke Tumpukan


Untuk menginputkan data ke tumpukan hal utama yang dilakukan adalah
memeriksa apakah tumpukan penuh atau tidak, jika penuh maka tidak dapat menambahkan
data ke tumpukan karena sudah tidak ada ruang lagi yang tersedia. Jadi cukup tampilkan
pesan bahwa tumpukannya penuh
Jika masih ada ruang maka tambahkan nilai tumpuk.atas dengan 1 kemudian masukkan data
ke ruang yang ditunjukkan oleh top.
 
void pop() {
if (isEmpty()) {
cout<< "\nData kosong\n" << endl;
}
else {
cout<< "\nData " << tumpuk.data[tumpuk.atas] << " sudah
terambil"
<< endl;
tumpuk.atas--;
}
}

7. Mengambil Data dari Tumpukan


Sebelum mengambil data, perlu diperiksa apakah tumpukan kosong atau tidak,
karena jika data tidak ada pada tumpukan maka tidak dapat diambil.
Jika tumpukan kosong maka cukup tampilkan pesan bahwa tidak ada data ditumpukan
tersebut. Jika masih ada data pada tumpukan maka tampilkan data dengan mengambil data
teratas dari tumpukan dan menghapus data tersebut dengan mengurangi nilai top
void printStack() {
if (isEmpty()) {
cout << "Tumpukan kosong";
}
else {
cout << "\nTumpukan : ";
for (int i = tumpuk.atas; i >= 0; i--)
cout << tumpuk.data[i] << ((i == 0) ? " " : ",");
}
}

8. Menampilkan data pada tumpukan


Sama halnya pada saat mengambil data dari tumpukan, perlu memeriksa tumpukan
tersebut kosong atau tidak. Jika tidak ada data ditumpukan maka tampilkan pesan bahwa
tumpukan kosong dan data tidak dapat ditampilkan. Jika masih ada data maka tampilkan data
satu-persatu dari tumpukan dengan menggunakan perulangan
 
void dataTeratas(){
cout << "Tumpukan data teratas : " << tumpuk.atas;

9. Memeriksa Tumpukan teratas


Pada void datateratas maka akan ditampilkan urutan tumpukan paling atas dari data
yang ada
 
int main() {
int pilihan;
init();
do {
printStack();
cout << "1. Push Data\n"
<< "2. Pop Data\n"
<< "3. Clear Data\n"
<< "4. Top of Stack\n"
<< "5. Keluar\n"
<< "Input Pilihan: ";
cin >> pilihan;
switch (pilihan) {
case 1:
push();
break;
case 2:
pop();
break;
case 3:
clear();
break;
case 4:
dataTeratas();
break;
default:
cout << "Pilihan tidak tersedia" << endl;
break;
}
} while (pilihan != 5);
}

10. Menampilkan Menu


Setelah semua data, variable dan fungsi selesai dideklarasikan dan di inisialisasikan
selanjutnya dapat membuat menu dengan do…..while dengan switch didalamnya sebelum
menampilkan menu perlu menampilkan data yang ada di stack menggunakan printstack()
sehingga user dapat melihat data pada tumpukan.
Selanjutnya menampilkan menu jika user memilih pilihan pertama maka fungsi push() dan
pilihan kedua akan menjalankan fungsi pop(), jika memilih pilihan ketiga maka semua data
akan di clear sedangkan pada pilihan keempat akan menjalankan fungsi top of stack / melihat
tumpukan data yang paling atas. Selama pilihan user tidak sama dengan 5 yaitu pilihan
kelima maka fungsi printstack() dan menu akan terus ditampilkan. Jika user memilih pilihan
kelima maka while akan berhenti menampilkan menu dan aplikasi akan ditutup

Anda mungkin juga menyukai