Stack
Stack
22.14.1.0064
#include <iostream>
using namespace std;
int maksimal = 5;
string arrayBuku[5];
int top = 0;
bool isFull()
{
if( top == maksimal ){
return true;
}else{
return false;
}
}
bool isEmpty()
{
if( top == 0 ){
return true;
}else{
return false;
}
}
void popArray()
{
if( isEmpty() ){
cout << "Data kosong!!" << endl;
}else{
arrayBuku[top-1] = "";
top--;
}
}
void displayArray(){
if( isEmpty() ){
cout << "Data kosong!!" << endl;
}else{
cout << "Data stack array : " << endl;
for( int i = maksimal - 1; i >= 0; i-- ){
if( arrayBuku[i] != "" ){
cout << "Data : " << arrayBuku[i] << endl;
}
}
cout << "\n" << endl;
}
}
int countArray()
{
if( isEmpty() ){
return 0;
}else{
return top;
}
}
void destroyArray(){
for( int i = 0; i < top; i++ ){
arrayBuku[i] = "";
}
top = 0;
}
// pointer
dataBarang *prev;
dataBarang *next;
};
int countBarang()
{
if( head == NULL ){
return 0;
}else{
int banyak = 0;
cur = head;
while( cur != NULL ){
cur = cur->next;
banyak++;
}
return banyak;
}
}
bool isFullBarang()
{
if( countBarang() == maksimalBarang ){
return true;
}else{
return false;
}
}
bool isEmptyBarang()
{
if( countBarang() == 0 ){
return true;
}else{
return false;
}
}
if( isFullBarang() ){
cout << "Stack Full!!" << endl;
}else{
if( isEmptyBarang() ){
createBarang(namaBarang, hargaBarang);
}else{
newNode = new dataBarang();
newNode->namaBarang = namaBarang;
newNode->hargaBarang = hargaBarang;
newNode->prev = tail;
tail->next = newNode;
newNode->next = NULL;
tail = newNode;
}
}
void popBarang()
{
del = tail;
tail = tail->prev;
tail->next = NULL;
delete del;
}
void displayBarang()
{
if( isEmptyBarang() ){
cout << "Data Barang kosong" << endl;
}else{
cout << "\n\nData barang : " << endl;
cur = tail;
while( cur != NULL ){
cout << "Data Barang : " << cur->namaBarang << " - Rp." << cur-
>hargaBarang << endl;
cur = cur->prev;
}
}
}
if( isEmptyBarang() ){
cout << "Data Barang kosong" << endl;
}else{
int nomor = 1;
cur = tail;
while( nomor < posisi ){
cur = cur->prev;
nomor++;
}
cout << "Data Barang Posisi ke-" << posisi << " : " << cur->namaBarang <<
" - Rp." << cur->hargaBarang << endl;
}
if( isEmptyBarang() ){
cout << "Data Barang kosong" << endl;
}else{
int nomor = 1;
cur = tail;
while( nomor < posisi ){
cur = cur->prev;
nomor++;
}
cur->namaBarang = namaBarang;
cur->hargaBarang = hargaBarang;
}
void destroyBarang()
{
cur = head;
while( cur != NULL ){
del = cur;
head = head->next;
delete del;
cur = cur->next;
}
}
int main(){
pushArray("Matematika");
displayArray();
pushArray("Web Programming");
pushArray("Pemrograman Berbasis Objek");
pushArray("Sistem Operasi");
pushArray("Struktur Data");
displayArray();
pushArray("Basis Data");
displayArray();
popArray();
displayArray();
cout << "Apakah data full ? : " << isFull() << endl;
cout << "Apakah data kosong ? : " << isEmpty() << endl;
peekArray(3);
destroyArray();
cout << "Apakah data full ? : " << isFull() << endl;
cout << "Apakah data kosong ? : " << isEmpty() << endl;
pushBarang("RAM", 500000);
displayBarang();
pushBarang("Motherboard", 1000000);
pushBarang("Monitor", 1800000);
pushBarang("Joystick", 250000);
pushBarang("Keyboard", 650000);
displayBarang();
pushBarang("Mouse", 1500000);
displayBarang();
cout << "Apakah data barang full ? : " << isFullBarang() << endl;
cout << "Apakah data barang kosong ? : " << isEmptyBarang() << endl;
cout << "Jumlah data barang : " << countBarang() << endl;
popBarang();
displayBarang();
peekBarang(3);
destroyBarang();
cout << "Apakah data barang full ? : " << isFullBarang() << endl;
cout << "Apakah data barang kosong ? : " << isEmptyBarang() << endl;
cout << "Jumlah data barang : " << countBarang() << endl;
displayBarang();