- data
- pointer penunjuk elemen setelahnya (next)
- pointer penunjuk elemen sebelumnya (prev)
#include "stdio.h"
#include "conio.h"
void main()
{
int cek=0, data[20], x, hapus;
char pil;
do {
clrscr();
printf("1. Tambah Antrian\n");
printf("2. Hapus Antrian\n");
printf("3. Lihat Antrian\n");
printf("4. Keluar\n");
printf("Silahkan masukkan pilihan anda... ");
pil=getche();
if(pil!='1' && pil !='2' && pil !='3' && pil!='4' )
printf("\n\nKalian salah mengetikkan inputan (cek lagi ya!)...\n");
else
{
if(pil=='1') //PUSH
{
if(cek==20)
printf("\nAntrian Penuh\n\n");
else
{
printf("\nMasukkan nilai-->");scanf("%i",&x);
data[cek]=x;
cek++;
}}
else
{
if(pil=='2') //POP
{
if(cek==0)
printf("\nAntrian kosong\n\n");
else
{
hapus=data[0];
for(int v=0;v<cek;v++)
data[v]=data[v+1];
data[cek-1]=NULL;
cek--;
printf("\nData dgn nilai=%i terhapus.",hapus);
}
getch();
}
else
{
if(pil=='3') //CEK DATA
{
if(cek==0)
printf("\nAntrian Kosong.\n\n");
else
{
printf("\n");
for(int z=0;z<cek;z++)
{
printf(" | ");
printf("%i",data[z]);
printf(" | ");
}
}
getch();
}
}
}
}
}while(pil!='4');
}
Contoh Implementasi Stack
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
void inisialisasi();
void push();
void pop();
void clear();
#define MAX_STACK 10
typedef struct STACK
{ int top;
char data[10][10];};
STACK tumpuk;
void inisialisasi()
{ tumpuk.top= -1;}
//fungsi untuk melakukan pengecekan terhadap stack, apakah stack tersebut penuh atau tidak
int IsFull()
{ if(tumpuk.top== MAX_STACK-1) return 1; else return 0;}
//fungsi untuk melakukan pengecekan terhadap stack, apakah stack tersebut kosong atau tidak
int IsEmpty()
{ if(tumpuk.top== -1) return 1; else return 0;}
//fungsi untuk memasukkan sebuah nilai/ data ke dalam stack.
//Sebelum sebuah nilai/ data dimasukkan ke dalam stack
//Prosedur ini terlebih dahulu akan menaikkan posisi TOP satu level ke atas
void Push(char d[10])
{ tumpuk.top++;
strcpy(tumpuk.data[tumpuk.top],d); }
void Pop()
{ printf("Elemen terakhir stack sudah dihapus, yaitu : %s\n",tumpuk.data
[tumpuk.top]);
tumpuk.top--; }
void Clear()
{ tumpuk.top=-1; }
void TampilStack()
{
for(int i=tumpuk.top;i>=0;i--)
{ printf("Data : %s\n",tumpuk.data[i]); }
}
int main()
{
int pil;
inisialisasi();
char dt[10];
do{
clrscr();
printf("PILIHAN PROSES\n");
printf("[1] Masukan Data\n");
printf("[2] Hapus Data\n");
printf("[3] Tampil Isi Stack\n");
printf("[4] Mereset Stack\n");
printf("[5] Keluar\n");
printf("Masukan kode pilihan (1 ... 5) : "); scanf("%d",&pil);
switch(pil)
{
case 1: if(IsFull() != 1)
{ printf("Nama = ");scanf("%s",dt);
Push(dt); }
else
printf("\nSudah penuh, push gagal!\n");
break;
case 2: if(IsEmpty() != 1)
Pop();
else
printf("\nMasih kosong!\n");
break;
case 3: if(IsEmpty() != 1)
TampilStack();
else
printf("\nStack kosong!\n");
break;
case 4: Clear();
printf("\nStack sudah di hapus!\n");
break;
}
getch();
} while(pil!= 5);
getch();
}