Anda di halaman 1dari 6

Struktur Data

Teknik Informatika UNISBANK

Page 1 of 6

STACK DAN QUEUE


Pengertian Stack Dan Queue
Tumpukan dapat diartikan sebagai suatu kumpulan data yang seolah-olah terlihat seperti
ada data yang diletakkan di atas data yang lain seperti pada gambar 01. Saat kita ingin
mengambil data A, maka data-data yang berada di atasnya haruslah lebih dulu dikeluarkan (
di-POP ). Hal ini membuat tumpukan / stack memiliki ciri-ciri Last In First Out ( LIFO )
yang berarti data yang masuk terakhir akan keluar pertama.
Sedangkan queue / antrian hampir mirip dengan stack, tapi hanya saja, data yang masuk
pertama kali akan keluar pertama kali dari Queue.
( Bisa dilihat pada gambar 02 ). FIFO ( First In First Out )

E
D
C
B
A

Gambar 01

Last saved by KENKEINA


Created by KENKEINA

Gambar 02

stack & queue

Struktur Data

Teknik Informatika UNISBANK

Page 2 of 6

Penyajian Stack Dan Queue


Stack dan/atau Queue dapat disajikan baik dengan Array maupun dengan struct. Pada
Array, stack ataupun queue yang disajikan bersifat statis. Ini disebabkan karena jumlah
maksimal data pada array sudah ditentukan sejak awal.
Contoh deklarasi stack dengan struct :
Struct stack
{
char data;
stack*next;

};

Operasi Pada Stack Dan Queue


Dalam penyajian stack dan queue, ada 2 proses yang terjadi, yaitu pemasukan data (PUSH)
dan pengeluaran data (POP). Seperti yang sudah dijelaskan bahwa array itu memiliki
jumlah maksimal, maka pada proses PUSH, perlu pengecekan apakah data yang di-PUSH di
stack / queue melebihi jumlah maksimal array atau tidak.
Contoh algoritma untuk proses PUSH (stack dan queue ) adalah sebagai berikut :
0. Masukkan inputan ( x )
1. Jika variable cek ( c ) = nilai maksimal array ( max ), kerjakan langkah 2. Jika tidak,
kerjakan langkah 3.
2. cetak TUMPUKAN PENUH
3. selama ( c ) kurang dari ( max ), maka c c + 1 dan data [c] x

Contoh algoritma untuk proses POP pada stack adalah sebagai berikut :
0. Jika c = 0, maka kerjakan langkah 2. Jika tidak, lakukan langkah 3.
1. cetak TUMPUKAN KOSONG
2. c c-1

Last saved by KENKEINA


Created by KENKEINA

stack & queue

Struktur Data

Teknik Informatika UNISBANK

Page 3 of 6

CONTOH !!!
Program stack yang mempunyai fungsi proses PUSH dan proses POP di dalamnya.
( stack dideklarasikan dengan array )
void main()
{
char A[10];
int dpn,blk;
char cek;
int z;
dpn=0; blk=1;
do{
clrscr();
printf("1. Tambah antrian\n");
printf("2. Hapus antrian\n");
printf("3. Lihat antrian\n");
printf("4. Exit\n");

printf("Silakan berikan pilihan anda : ");


cek=getche();
if (cek!='1' && cek!='2' && cek!='3' && cek!='4')
printf("\n Anda salah mengetikan inputan!\n");

else
{
if(cek=='1')
{
if(blk==9)
{
printf("\n Maaf antrian
penuh\n"); goto error1;
}
blk++;
printf("\n Silakan masukan
inputan:"); A[blk]=getche();
}
else if(cek=='2')
{
if(dpn>blk)
{
printf("\n Maaf antrian
Kosong\n"); goto error1;
}
for(int v=0;v<=blk;v++)
{
A[v]=A[v+1];
}
blk--;
printf("\nProses penghapusan berhasil");
}
else if (cek=='3')
{
if (dpn>blk)
{
printf("\n Maaf Antrian
Kosong\n"); goto error1;
}
printf("\n\nAda %i antrian\n",(blk+1)dpn); for(z=0; z<=blk; z++)
printf("| %c |",A[z]);

Last saved by KENKEINA


Created by KENKEINA

stack & queue

Struktur Data

Teknik Informatika UNISBANK

Page 4 of 6
}
}
error1:
printf("\n Silakan tekan Enter untuk
melanjutkan...\n"); system("pause>nul");
}while (cek!='4');
}

:: SOAL LATIHAN ::
1. Coba buat program stack (tumpukan) dengan fungsi PUSH dan POP
yang terpisah dari program utama!
2. Buat program yang sejenis untuk Queue / antrian.
:: CONTOH !!!
Program stack yang mempunyai fungsi proses PUSH dan proses POP terpisah
dan stack dideklarasikan dengan struct.
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct tumpukan
{
char data;
tumpukan*next;

};
tumpukan*atas;
tumpukan*bawah;
tumpukan*baru;
tumpukan*hapus;
tumpukan*bantu;
void push()
{
baru=new tumpukan;
fflush(stdin);

printf("Data yg ingin dimasukkan ->


"); scanf("%c",&baru->data); baru>next=NULL;
if(atas==NULL)
{
atas=baru;
bawah=baru;
}
else
{
baru->next=atas;
atas=baru;

}
}
void pop()
{
if(atas!=NULL)

Last saved by KENKEINA


Created by KENKEINA

stack & queue

Struktur Data

Teknik Informatika UNISBANK

Page 5 of 6
{
if(atas==bawah)
{
delete atas;
atas=NULL;
}
else
{
hapus=atas;
atas=atas->next;
delete hapus;

}
}
else
{
printf("tumpukan kosong\nTekan enter untuk
melanjutkan..."); getch();
}
}
void show()
{
bantu=atas;
while(bantu!=NULL)
{
printf("| %c |\n",bantu>data); bantu=bantu->next;
}
printf("\ntekan enter untuk melanjutkan...\n");
getch();
}
void main()
{
clrscr();
int pil;
do

{
clrscr();
printf("program tumpukan\n");
printf("==================\n");
printf("1.push\n");
printf("2.pop\n");
printf("3.tampil\n");
printf("4.keluar\n");

printf("Masukkan pilihan : ");scanf("%i",&pil);


switch(pil)
{
case 1:
push();
break;
case 2:
pop();
break;

case 3:
show();
break;
}
}
while(pil!=4);
}

Last saved by KENKEINA


Created by KENKEINA

stack & queue

Struktur Data

Teknik Informatika UNISBANK

Page 6 of 6

:: SOAL ::
Coba buat program queue dengan memakai struct seperti program di atas!

Last saved by KENKEINA


Created by KENKEINA

stack & queue

Anda mungkin juga menyukai