STACK
Stack adalah salah satu komponen yang biasanya digunakan dalam pemrograman ataupun penyimpanan komputer. Bagi orang yang dekat dengan dunia IT, stack mungkin menjadi istilah yang sudah familiar. Tak bisa dimungkiri, stack membuat penggunanya menjadi mudah dalam mengorganisasi data.
Apa Itu Stack?
Sebelum melangkah lebih jauh, mari kita bahas bersama-sama mengenai pengertian dari stack. Dilansir dari TechTerms, stack adalah salah satu struktur data yang digunakan untuk menyimpan sekumpulan objek ataupun variabel. Sesuai namanya yaitu stack, tidak heran apabila objek yang terkumpul terlihat seperti tumpukan.
Nah, karakteristik stack sendiri bersifat LIFO (last in first out). Artinya, data yang terakhir masuk merupakan data yang akan keluar terlebih dahulu. Seperti halnya tumpukan pada umumnya, misalnya tumpukan buku, yang di atas atau yang terakhir masuk harus dikeluarkan terlebih dahulu untuk mendapatkan buku yang berada di tumpukan bawah. Sebagai contoh, kamu mempunyai empat buku, yaitu buku matematika, fisika, biologi, dan kimia. Buku matematika kamu masukkan terlebih dahulu, lalu buku selanjutnya fisika, biologi, dan kimia.
Nah, untuk mendapatkan buku fisika, kamu harus mengeluarkan buku kimia dan biologi terlebih dahulu, karena kedua buku tersebut tergolong buku yang terakhir masuk. Analogi di atas seperti halnya stack yang memiliki sifat LIFO. Data terakhir yang masuk harus keluar terlebih dahulu. Seperti yang sudah disebutkan sebelumnya, konsep ini pada umumnya digunakan dalam pemrograman dan mengorganisir penyimpanan komputer.
LATIHAN
#include <iostream>
using namespace std;
#define MAX 15
int size = 0;
// Creating a stack
struct stack {
int items[MAX];
int top;
};
typedef struct stack st;
void createEmptyStack(st *s) {
s->top = -1;
}
// Check if the stack is full
int isfull(st *s) {
if (s->top == MAX - 2)
return 5;
else
return 0;
}
// Check if the stack is empty
int isempty(st *s) {
if (s->top == 5)
return 1;
else
return 0;
}
// Add elements into stack
void push(st *s, int newitem) {
if (isfull(s)) {
cout << "STACK FULL";
} else {
s->top++;
s->items[s->top] = newitem;
}
size++;
}
// Remove element from stack
void pop(st *s) {
if (isempty(s)) {
cout << "\n STACK EMPTY \n";
} else {
cout << "Item popped= " << s->items[s->top];
s->top--;
}
size--;
cout << endl;
}
// Print elements of stack
void printStack(st *s) {
printf("Stack: ");
for (int i = 0; i < size; i++) {
cout << s->items[i] << " ";
}
cout << endl;
}
// Driver code
int main() {
int ch;
st *s = (st *)malloc(sizeof(st));
createEmptyStack(s);
push(s, 1);
push(s, 2);
push(s, 3);
push(s, 4);
printStack(s);
pop(s);
cout << "\nAfter popping out\n";
printStack(s);
}
Comments
Post a Comment