STACK (Tumpukan) Dengan Bahasa C

Posted on Updated on


STACK

Stack bisa diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang diletakkan diatas data yang lain. Perlu diingat, didalam stack kita bisa menambahkan (menyisipkan) dan mengambil (menghapus) data melalui ujung yang sama yang disebut sebagai ujung atas stack (top of stack). Stack mempunyai sifat LIFO (last in first Out), yaitu yang terakhir masuk adalah yang pertama keluar.

Bentuk penyajian stack bisa menggunakan tipe data array, tetapi sebenarnya penyajian stack menggunakan array adalah kurang tepat karena banyaknya elmen dalam array adalah statis, sedangkan dalam stack banyaknya elemen sangat bervariasi atau dinamis. Meskipun demikian, array bisa digunakan untuk penyajian stack, tetapi dengan anggapan bahwa banyaknya elemen maksimal dari suatu stack tidak melebihi batas maksimum banyaknya elemen array. Pada suatu saat, ukuran stack akan sama dengan ukuran array. Bila diteruskan menambah data, maka akan terjadi overflow. Oleh karena itu, perlu ditambahkan data untuk mencatat posisi ujung stack. Ada dua macam penyajian stack menggunakan array, yaitu Single stack dan Double stack.

Deklarasi Umum

Bentuk deklarasi single stack:

#define MAX 50

#define true 1

#define false 0

Char stack[MAX];

Int top;

Operasi-Operasi Single Stack

  1. Fungsi Init
  2. Fungsi Full
  3. Fungsi empty
  4. Fungsi clear
  5. Fungsi Push
  6. Fungsi Pop

/*operasi-operasi single stack*/

#include<stdio.h>
#include<conio.h>

#define MAX 50
#define true 1
#define false 0

char stack[MAX];
int top;

void init(void);
int full (void);
int empty (void);
char pop (void);
void clear (void);
void push (char info);
void baca (void);

main()
{
 char pilih,elm;

printf("----Demo Operasi Single Stack----\n");
 init();

do
 {
 printf("operasi single stack:\n");
 printf("[1] PUSH\n");
 printf("[2] POP\n");
 printf("[3] CLEAR\n");
 printf("[4] BACA\n");
 printf("[5] SELESAI...\n");
 printf(" Pilihan : ");scanf("%s",&pilih);
 switch(pilih)
 {
 case '1': printf("PUSH ");scanf("%s",&elm);push(elm);break;
 case '2': elm=pop();printf("POP %c\n",elm);break;
 case '3': clear();break;
 case '4': baca();break;
 case '5': break;
 default : printf("Salah pilih...\n");
 }
 printf("\n");
 }while(pilih!='5');
 getche();
}

void init(void)
{
 top=0;
}

void push(char info)
{
 if(full()!=true)
 { top++;
 stack[top]=info; }
 else printf("Stack overflow...\n");
}

char pop(void)
{
 char info;
 if(empty()!=true)
 { info=stack[top];
 top--;
 return(info);
 }
 else printf("Stack underflow...\n");
}

void clear(void)
{
 top=0;
}

int full(void)
{
 if(top==MAX) return(true);
 else return(false);
}

int empty(void)
{
 if(top==0) return(true);
 else return(false);
}

void baca(void)
{
 int i;
 printf("isi stack : ");
 if(top>0)
 {
 for(i=1;i<=top;i++)
 printf("%c ",stack[i]);
 }
 else printf("(kosong)");
 printf("\n");
}

stack

One thought on “STACK (Tumpukan) Dengan Bahasa C

    andika said:
    24 May 2015 at 13:29

    artikelnya bermanfaat kak, ini sya jga punya artikel tentang Stack (tumpukan) dalam Bahasa C, smoga dpt saling melengkapi

    Stack (tumpukan) dalam Bahasa C

    Kumpulan Materi Bahasa C, Lengkap dengan contoh program

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s