Stack dan aplikasinya (C++)

Stack dan aplikasinya dengan C++

PENGERTIAN STACK
Secara sederhana stack bisa diartikan dengan sebagai tumpukan dari benda atau data yang seolah-olah diletakkan di atas data yang lain dimana data yang pertama kali masuk akan terakhir. Didalam suatu stack kita dapat menambah data (PUSH) dan menghapus data (POP) lewat ujung yang sama.

Secara sederhana sebuah stack bisa digambarkan sebagai tumpukan buku yang disimpan dengan cara ditumpuk keatas. Dimana buku yang pertama kali disimpan atau ditumpuk ada di paling bawah dan yang selanjutnya ditumpuk diatasnya. Dan ketika kita melakukan pengambilan buku ototmatis buku yang terkahir ditumpuk atau disimpan terakhir akan mejadi yang pertama diambil, istilah ini kemudian disebut FILO (First In Last Out) dan bertambah atau berkurangnya data melalui satu ujung yang sama yaitu ujung atas tumpukan (Top of Stack).

Dibawah ini saya berikan beberapa contoh aplikasi stack menggunakan bahasa pemrograman C++ yang saya kutip dari berbagai sumber:

///////////////////////////////////////////////////////////// // //
// Implimentation Of STACK using LINKLIST //
// Created By //
// Kaustubh Bhoyar //// // //////////////////////////////////////

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define NULL 0

main()
{ struct node{
int data,n;
struct node *link;};

int n,item;

typedef struct node node;
node *temp,*sp=NULL;
while(1){
//clrscr(); //This program is designed using VC++ Compiler if you are using the Turbo C compiler then you may use clrscr() here
printf(”Please select your choice\n1. PUSH\n2. POP\n3. Search\n4. Display\n5. Ex!t\n”);
scanf(”%d”,&n);

switch(n) {
case 1:
printf(”Enter the data to PUSH into Stack\n”);
scanf(”%d”,&item);
temp=(node *) malloc(sizeof(node));
temp->data=item;
temp->link=sp;
sp=temp;
break;
case 2:
if(sp==NULL)
{
printf(”\nSTACK underflow\n”);
getch();
}
else
{
item=sp->data;
sp=sp->link;
printf(”\nPOP Successful Removed Data Is %d”,item);
getch();
}
break;
case 3:
if(sp==NULL)
{
printf(”\nSTACK underflow\n”);
}
else
{
temp=sp;
printf(”\nEnter data to search from Stack”);
scanf(”%d”,&item);
n=0;
while(temp->data!=item)
{
if(temp->link==NULL)
goto print;
temp=temp->link;
n++;
}
print:
if(temp->data==item)
{
printf(”Data %d Found In Stack at position %d”,item,n+1);
}
else
{
printf(”Data not present in Stack”);
}
getch();
break;
case 4:
if(sp==NULL)
{
printf(”\nSTACK is empty\n”);
}
else
{
temp=sp;
printf(”\n%d”,temp->data);
while(temp->link!=NULL)
{
temp=temp->link;
printf(”\n%d”,temp->data);
}
}
getch();
break;
case 5:
exit(0);
break;
}
}
}
}

Contoh lain:

//Nama file unit tumpukan.h
# include <iostream.h>
# include <stdlib.h>
# include <conio.h>

# define alamat Elemen*

// inisialisasi data dan fungsi yang dibutuhkan
typedef char tInfo;
typedef struct Elemen{
tInfo Info;
alamat Berikut;} tElemen;

typedef struct tTumpukan{
alamat atas;} Tumpukan;

void inisialisasi(Tumpukan* T);
void Push(Tumpukan* T, tInfo info);
void Pop(Tumpukan* T, tInfo* Info);
int tumpukanKosong (Tumpukan T);

//insisialisasi tumpukan
void inisialisasi(Tumpukan* T)
{
T->atas = NULL;
T->bawah = NULL;
}

//Operasi Push
void Push(Tumpukan* T, tInfo info)
{ alamat P;
P = new Elemen;//(alamat) malloc(sizeof(alamat));
P->Info = info;

if (tumpukanKosong(*T)){
P->Info = info;
P->Berikut=NULL;
T->atas =P;
}
else{
P->Info = info;
P->Berikut = T->atas;
T->atas =P;
}
}

// Operasi Pop
void Pop(Tumpukan* T, tInfo* Info)
{ alamat P;
P = T->atas;
*Info = P->Info;
T->atas = T->atas->Berikut;
free(P);
}

// inisialisasi tumpukan kosong
int tumpukanKosong(Tumpukan Q)
{ return ((Q.atas==NULL)); }

//Nama file unit tumpukan.cpp
# include <iostream.h>
# include <stdlib.h>
# include <conio.h>
# include <tumpukan.h>

# define alamat Elemen*

// untuk menampilkan atau mencetak tumpukan
void tampilTumpukan(Tumpukan T)
{ alamat P = T.atas;
cout << “Isi stack : “;
while ((P!=NULL)) {
cout << P->Info << ” – “;
P = P->Berikut;
}
cout << “\n”;
}

// untuk mencetak menu utama
void cetakMenu(){
cout << “***CONTOH TUMPUKAN***“;
cout << “\n 1. Tambah elemen\n”;
cout << “ 2. Hapus elemen\n”;
cout << “ 3. Cetak tumpukan\n”;
cout << “ 4. Selesai\n\n”;
}

// program utama
int main()
{ Tumpukan T;
int selesai;
int pilMenu;
tInfo elm;
inisialisasi(&T);
selesai = 0;
do{
clrscr;
cetakMenu();
cout << “Menu yg dipilih : “;
cin >> pilMenu;
switch(pilMenu) {
case 1 : cout << “\nMasukkan elemen yg ditambahkan : “;
cin >> elm;
Push(&T,elm);
break;
case 2 : if (tumpukanKosong(T)){
cout << “\nTumpukan kosong kosong, tidak bisa dihapus\n”;
}
else{
Pop(&T, &elm);
cout << “\nElemen yang dihapus : ” << elm << “\n”;
}
break;

case 3 : tampilTumpukan(T);
break;
default : selesai = 1;
}
}
while ( !selesai );

return 1;
}

Referensi:

1. http://planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=5671&lngWId=3
2. http://ienx.wordpress.com/2007/05/09/stack-tumpukan/
3. http://www.hatma.info

About adiebangga

Low Profile,. Passion,.. Respect,.. GO GREEN,.

Posted on Mei 11, 2008, in Info. Bookmark the permalink. 4 Komentar.

  1. kk kq outout nya mlah error ya ???

    mohon penjelasan nya ???

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: