source code praktikum 7#include <cstdlib> #include <iostream> #define maks 5 </pre> using namespace std; class Stack{ friend ostream& operator<<(ostream&, const Stack&); public: Stack(); int penuh(int); int kosong(int); void cetak(); void push(char); char pop(); private: char A[maks]; int banyak; }; ostream& operator<<(ostream& out, const Stack& s) { cout << "\nIsi stack : "; for (int i=0;i< s.banyak;i++) out << s.A[i] << " "; } Stack::Stack(){ banyak = 0; for (int i=0; i<maks; i++) A[i] = '0'; } int Stack::penuh(int s) { return s == maks ? 1 : 0; } int Stack::kosong(int s) { return s == 0 ? 1 : 0; } void Stack::cetak() { cout << "\nIsi stack :"; for (int i=0;i< banyak;i++) cout << A[i] << " "; } void Stack::push(char x) { cout << "\nElemen masuk :" <<x; cout<<"\n"; if (penuh(banyak)) cout << "Stack penuh"; else if (A[0]=='0'){ A[0] = x; banyak++; } else { for (int i=banyak; i>=0; i--) A[i+1] = A[i]; A[0] = x; banyak++; } } char Stack::pop() { cout <<"\nPop stack, elemen yang di-pop :" << A[0]; char temp=A[0]; for (int i=0;i<banyak; i++) A[i] = A[i+1]; A[banyak]= '0'; banyak--; return temp; } int main(int argc, char *argv[]) { Stack stack; // for (char c='a'; c<'d'; c++){ stack.push(')'); stack.push('a'); stack.push('+'); stack.push('b'); stack.push('('); stack.push('('); stack.cetak(); char p = stack.pop(); stack.cetak(); cout << "\n\nCetak pakai overloading : " <<stack; cout<<endl; system("PAUSE"); return EXIT_SUCCESS; }<p