|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. 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. -> FIFO ( First In First Out ).
|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 :
- Masukkan inputan ( x )
- Jika variable cek ( c ) = nilai maksimal array ( max ), kerjakan langkah 2. Jika tidak, kerjakan langkah 3.
- Cetak ”TUMPUKAN PENUH”
- Selama ( c ) kurang dari ( max ), maka -> c Å c + 1 dan data [c] <- x
- Jika c = 0, maka kerjakan langkah 2. Jika tidak, lakukan langkah 3.
- cetak ”TUMPUKAN KOSONG”
- c <- c-1
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]);
}
}
error1:
printf("\n Silakan tekan Enter untuk melanjutkan...\n");
system("pause>nul");
}
while (cek!='4');
}
Gambar
Pengertian Stack Dan Queue
Sumber:
Suarga. 2012. Algoritma dan Pemrograman. Yogyakarta: ANDI.
Arnawa, Surya. 2015. Array, Searching. (Praktikum Struktur Data)
Supriana. 2015. Pertemuan V(Array, Queue). (Struktur Data)
Arnawa, Surya. 2015. Array, Searching. (Praktikum Struktur Data)
Supriana. 2015. Pertemuan V(Array, Queue). (Struktur Data)
Sekian uraian tentang Pengertian Stack Dan Queue, semoga bermanfaat.