Anda di halaman 1dari 6

1.

Lengkapilah program pada kegiatan praktikum dengan


operasi :
a. Clear untuk mengosongkan stack.
b. IsEmpty untuk memeriksa stack dalam kondisi kosong
c. IsFull untuk memeriksa stack dalam kondisi full
d. Tambahkan validasi untuk tidak dapat menambahkan data
jika stack penuh dan validasi untuk tidak dapat menghapus
data jika stack kosong
Jawab :
#include <iostream>
using namespace std;

int top = -1;


int data[5];

void Push(int input) {


if (top < 4) {
top = top + 1;
data[top] = input;
cout << "Push Berhasil !" << endl;
} else {
cout << "Stack penuh. Tidak dapat menambahkan data."
<< endl;
}
}

void Pop() {
if (top >= 0) {
top = top - 1;
cout << "Pop Berhasil" << endl;
} else {
cout << "Stack kosong. Tidak dapat menghapus data."
<< endl;
}
}

void Clear() {
top = -1;
cout << "Stack berhasil dikosongkan." << endl;
}

bool IsEmpty() {
return top == -1;
}

bool IsFull() {
return top == 4;
}

void isiStack() {
if (IsEmpty()) {
cout << "Stack kosong." << endl;
} else {
for (int i = top; i >= 0; i--) {
cout << "| " << data[i] << " |" << endl;
}
}
}

int main() {
int pilih, input;
while (true) {
cout << "Menu" << endl;
cout << "1. Push Stack" << endl;
cout << "2. Pop Stack" << endl;
cout << "3. Isi Stack" << endl;
cout << "4. Clear Stack" << endl;
cout << "Masukkan Pilihan : ";
cin >> pilih;
if (pilih == 1) {
cout << "Masukkan Data : ";
cin >> input;
Push(input);
} else if (pilih == 2) {
Pop();
} else if (pilih == 3) {
isiStack();
} else if (pilih == 4) {
Clear();
} else {
cout << "Tidak Ada Pilihan !" << endl;
}
}
return 0;
}
2. Buatlah program seperti ilustrasi berikut.
Tumpukan
1 5, 3, 6, 8, 7
Tumpukan
2 5, 3, 6, 7, 2
Tumpukan
3 25, 9, 36, 56, 14
Tumpukan
4 56, 36, 25, 14, 9
Tumpukan 3 : berisi hasil kali dari tumpukan 1 dan tumpukan
2.
Tumpukan 4 : berisi hasil pengUrutan tumpukan 3
menggunakan bubble sort.
#include <iostream>
#include <stack>
#include <vector>
using namespace std;

void tampilkanTumpukan(const stack<int>& s, int


nomorTumpukan) {
cout << "Tumpukan " << nomorTumpukan << ": ";
stack<int> temp = s;
while (!temp.empty()) {
cout << temp.top() << " ";
temp.pop();
}
cout << endl;
}

int hitungHasilKali(stack<int>& s1, stack<int>& s2) {


if (s1.size() != s2.size()) {
cerr << "Error: Ukuran tumpukan berbeda." << endl;
return 0;
}
int hasilKali = 0;

while (!s1.empty()) {
hasilKali += s1.top() * s2.top();
s1.pop();
s2.pop();
}

return hasilKali;
}

void bubbleSort(stack<int>& s) {
vector<int> temp;

while (!s.empty()) {
temp.push_back(s.top());
s.pop();
}

size_t size = temp.size();


for (size_t i = 0; i < size; ++i) {
for (size_t j = 0; j < size - i - 1; ++j) {
if (temp[j] > temp[j + 1]) {
swap(temp[j], temp[j + 1]);
}
}
}

for (size_t i = 0; i < size; ++i) {


s.push(temp[i]);
}
}

int main() {
stack<int> tumpukan1, tumpukan2, tumpukan3,
tumpukan4;

tumpukan1.push(5);
tumpukan1.push(3);
tumpukan1.push(6);
tumpukan1.push(8);
tumpukan1.push(7);
tampilkanTumpukan(tumpukan1, 1);
tumpukan2.push(5);
tumpukan2.push(3);
tumpukan2.push(6);
tumpukan2.push(7);
tumpukan2.push(2);
tampilkanTumpukan(tumpukan2, 2);

tumpukan3.push(25);
tumpukan3.push(9);
tumpukan3.push(36);
tumpukan3.push(56);
tumpukan3.push(14);
tampilkanTumpukan(tumpukan3, 3);

bubbleSort(tumpukan3);

tampilkanTumpukan(tumpukan3, 4);

return 0;
}

Anda mungkin juga menyukai