Jun 142010
 

Stack adalah suatu daftar atau urutan elemen yang elemennya dapat diambil dan ditambah hanya hanya melalui satu jalur saja, yaitu bagian depan list. Contoh dalam kehidupan sehari-hari adalah tumpukan buku di perpustakaan yang tumpukannya dapat ditambah pada bagian paling atas dan mengambilnya dari bagian paling atas pula.
Ada 2 operasi paling dasar yang penting dari stack yang dapat dilakukan, yaitu :
a. Operasi push yaitu operasi menambahkan elemen data pada urutan terakhir (paling atas).
b. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dari stack.
Tumpukan disebut juga “Push Down Back” yaitu penambahan elemen baru (push) dan penghapusan elemen dari tumpukan (pop) Untuk mengimplementasikan stack, bisa menggunakan linked list atau juga array, tergantung pada permasalahan yang dihadapi. Apabila permasalahan yang dihadapi adalah permasalahan tumpukan (stack) dimana jumlah elemen maksimum dibatasi, maka bisa digunakan array. Apabila jumlah elemen maksimumnya tidak dibatasi, maka linked list lebih tepat digunakan. Salah satu konsep yang efektif untuk menyimpan dan mengambil data adalah “terakhir masuk sebagai yang pertama keluar” (Last in First
Out/LIFO). Dengan konsep ini, pengambilan data akan berkebalikan urutannya dengan penyimpanan data.

oke, ga usah kebanyakan teori, kita langsung ke contoh source code:

stack.h
————————————-begin—————————
#define stack_H
#define stack_H

#include
#include
#include
#include
#include

#define nil NULL
#define info(P) (P)->info
#define next(P) (P)->next
#define firstStack(S) ((S).firstStack)
#define lastStack(S) ((S).lastStack)

typedef int infotype;
typedef struct tElmtStack *address;
typedef struct tElmtStack{
infotype info;
address next;
}ElmtStack;
typedef struct{
address firstStack;
address lastStack;
}Stack;

bool stackEmpty(Stack S);
void createStack(Stack *S);
void bacaStack(infotype *x);
void tulisStack(Stack S);
address Alokasi(infotype x);
void Dealokasi(address P);
void Push(Stack *S,infotype x);
void Pop(Stack *S);

bool stackEmpty(Stack S){
return ((firstStack(S)==nil)&&(lastStack(S)==nil));
}

void createStack(Stack *S){
firstStack(*S)=nil;
lastStack(*S)=nil;
}

void bacaStack(infotype *x){
printf(“\nMasukkan data: “);scanf(“%d”,&(*x));
}

void tulisStack(Stack S){
address P;
P=firstStack(S);
printf(“Data Stack:\n”);
while(P!=nil)
{
printf(“%d\n”,info(P));
P=next(P);
}
}

address Alokasi(infotype x){
address P;
P=(address)malloc(sizeof(ElmtStack));
if(P!=nil)
{
info(P)=x;
next(P)=nil;
}
return P;
}

void Dealokasi(address P){
free(P);
}

void Push(Stack *S,infotype x)
{
address P;
P=Alokasi(x);
if(P!=nil)
{
if(stackEmpty(*S))
{
lastStack(*S)=P;
}
next(P)=firstStack(*S);
firstStack(*S)=P;
}
}

void Pop(Stack *S)
{
address P;
P=firstStack(*S);
if(!stackEmpty(*S))
{
if(P==lastStack(*S))
{
Dealokasi(P);
firstStack(*S)=nil;
lastStack(*S)=nil;
}
else
{
firstStack(*S)=next(P);
Dealokasi(P);
}
}
}
——————————end———————————–



teststack.cpp
——————————-begin—————————–
#include
#include”stack.h”

main(){
Stack S;
infotype x;
createStack(&S);

bacaStack(&x);
Push(&S, x);
cout<<“Push\n”<
tulisStack(S);

bacaStack(&x);
Push(&S, x);
cout<<“Push\n”<
tulisStack(S);

bacaStack(&x);
Push(&S, x);
cout<<“Push\n”<
tulisStack(S);

Pop(&S);
cout<<” Pop\n”<
tulisStack(S);

Pop(&S);
cout<<” Pop\n”<
tulisStack(S);

}
———————————-end————————-

yah… seperti biasa.. saya selalu baik hati… 🙂 jadi saya siapkan link download untuk mendownload file cpp dan header nya… silakan..

download disini

  6 Responses to “Stack pada bahasa pemrograman c++”

  1. g juga ah.. hehehe.. serius, itu dah q coba n g error kok..

  2. tanya…
    program stack klo inputan : struktur data
    output: atad rutkurts
    gmn???

  3. ya dibalik tho tik… 😀

  4. kok dijalankan di turbo c++ Include “strack.h” nya gak kebaca sih

  5. coba di cek lagi mas… 😀 pasti bisa kok… 😀

Sorry, the comment form is closed at this time.