Implementasi Stack dan Code nya C++
Sama
halnya dengan data pada konsep stack di algoritma dan pemrograman.
Stack (tumpukan) inilah yang menerapkan konsep yang kita kenal dengan
LIFO (Last-In-First-Out) atau FCLS (First-Come-Last-Serve), artinya
elemen struktur yang dimasukkan ke dalam rangkaian terakhir kali maka
akan muncul pertama kali apabila ditampilkan/dikeluarkan.
Pada
konsep Last-In-First-Out, yang terakhir masuk yang pertama kali
keluar. Jika ada sebanyak NOEL elemen pada sebuah stack, maka elemen
ke-NOEL merupakan elemen TOP.
Berikut
ini adalah operator-operator atau nama method yang biasa digunakan
dalam pemrograman algoritma stack.
-
PUSH: penyisipan (Memasukkan elemen).
-
POP: penghapusan (Mengeluarkan elemen puncak).
-
IsEmpty: operator yang memeriksa apakah stack kosong.
-
IsFull: operator yang memeriksa apakah stack penuh.
-
Clear: operator untuk menghapus stack.
Berikut
ini adalah contoh program simulasi stack menggunakan bahasa C++
header
file
#include <iostream>
#include <vector>
using namespace std;
template <class T>
class Stack{
private:
vector<T> data;
public:
bool Empty(); //checks if stack is empty
void Push(T item); //adds item to stack
T Top(); //returns item at top of stack
void Pop(); //removes item at top of stack
friend ostream& operator<<(ostream&out, const Stack &s); //overloaded output operator
};
implementation
file
#include
<iostream>
#include
<vector>
#include
"Stack.h"
using
namespace
std;
template
<class
T>
bool
Stack<T>::Empty() //checks
if stack is empty
{
return
data.empty();
}
template
<class
T>
void
Stack<T>::Push(T item) //adds
item to stack
{
data.push_back(item);
}
template
<class
T>
T
Stack<T>::Top() //returns
item at top of stack
{
if(data.back()>-1)
return
data.back();
else
cerr<<"Stack
is empty\n";
}
template
<class
T>
void
Stack<T>::Pop() //removes
item at top of stack
{
data.pop_back();
}
template
<class
T>
ostream
& operator<<(ostream&out,
const
Stack<T> &s) //overloaded
output operator
{
while(!s.Empty())
{
out<<s.Top();
s.Pop();
}return
out;
}
driver
file
#include
<iostream>
#include
<vector>
#include
<string>
#include
"Stack.h"
#include
<fstream>
using
namespace
std;
int
main()
{
ifstream
inFile;
ofstream
outFile;
inFile.open("palindrome.txt");
outFile.open("outfile.txt");
Stack<string>
s;
string
holdPalindrome="";
//I
know the following isn't really right but I stopped here
while(inFile)
{
holdPalindrome.append(s.Top());
outFile<<holdPalindrome<<endl;
}
inFile.close();
outFile.close();
return
0;
}
sekian
semoga bermanfaat dan terima kasih.