Stack (tumpukan) adalah struktur data yang memberikan data seperti tumpukan dalam gelas, jadi jika suatu data akan dimasukkan ke dalam gelas yang pertama akan menjadi yang terakhir untuk diambil, maka struktur data ini menganut kaidah LIFO (Last In First Out). Arti dari LIFO itu adalah yang terakhir masuk maka akan menjadi yang pertama keluar.
Stack yang akan Santekno buat menerapkan sistem OOP (Object Oriented Programming) sehingga agar lebih mudah dipahaminya. Dalam OOP kita harus membuat suatu kelas yang akan kita namakan Stack.
Kode Kelas Stack
1#include <iostream>
2#include <iomanip>
3#define SIZE 100
4using namespace std;
5
6class Stack{
7 int stack[SIZE];
8 int atas;
9public:
10 Stack(){atas=SIZE;}
11 bool empty(){return atas==SIZE;}
12 bool full(){return atas==0;}
13 void push(int value);
14 void pop();
15 int top();
16 int size(){return SIZE-atas;}
17 int getAtas() {return atas;}
18 int *getStack() {return stack;}
19};
20
21void Stack::push(int val){
22 if(full())
23 cout << "Stack is full\n";
24 else{
25 stack[--atas]=val;
26 }
27}
28
29void Stack::pop(){
30 if(empty())
31 cout << "Stack is empty\n";
32 else
33 ++atas;
34}
35
36int Stack::top(){
37 if(empty()){
38 cout << "Stack is empty\n";
39 return 0;
40 }else{
41 return stack[atas];
42 }
43}
44
45ostream& operator<< (ostream &out,Stack &s){
46 if(s.empty())
47 out << "Stack is empty\n";
48 else{
49 for(int i=s.getAtas();i < s.getAtas() + s.size();++i)
50 out << s.getStack()[i] << endl;
51 }
52 return out;
53}
54
55int main(){
56 Stack st;
57 st.push(50);
58 st.push(15);
59 st.push(20);
60 cout << "Stack Awal\n";
61 cout << st;
62 int nilai=st.top();
63 st.pop();
64 cout << "\nHasil pop(): " << nilai << endl;
65 cout << "\nStack Akhir\n";
66 cout << st;
67 return 0;
68}Kode Program Push()
1void Stack::push(int val){
2 if(full())
3 cout << "Stack is full\n";
4 else{
5 stack[--atas]=val;
6 }
7}Kode Program Pop()
1void Stack::pop(){
2 if(empty())
3 cout << "Stack is empty\n";
4 else
5 ++atas;
6}Kode Program Top()
1int Stack::top(){
2 if(empty()){
3 cout << "Stack is empty\n";
4 return 0;
5 }else{
6 return stack[atas];
7 }
8}Kelas ini memiliki beberapa method atau fungsi yang sesuai dengan sifat-sifat dan kaidah Stack. Seperti Push, Pop, Top dan Full. Push adalah menyimpan data ke dalam stack. lalu Pop adalah mengambil data paling atas dari Stack sedangkan Top adalah melihat isi data yang paling atas dari suatu Stack.