contoh program animasi menggunakan antrian

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

char pil;
int jml;
void delay();

struct node
{
char kar;
node *next;
};
node *tail;   //ekor
node *now;
node *head;
void buatnodebaru()
{
tail=NULL;
head=NULL;
}
void push(char ch)
{
now=new node;
if(head==NULL)
{
now->kar=ch;
now->next=NULL;
tail=now;
head=now;

}
else
{
now->kar=ch;
now->next=NULL;
tail->next = now;
tail=now;
}
}

void enqueue()
{
int i;
char temp;
gotoxy(1,6);
cout<<”   “;
gotoxy(1,8);
cout<<” “;
gotoxy(1,6);
cout<<“masukkan @ karakter : “;
cin>>temp;
gotoxy(1,6);
cout<<” “;

push(temp);
for(i=1;i<= 75-jml*6;i++)
{
gotoxy(i+1,20);cout<<” O”;
gotoxy(i,21); cout<<“=(“<<now->kar<<“)=”;
gotoxy(i+1,22);cout<<“| |”;
delay();
if(i!=75-jml*6)
{
gotoxy(i+1,20);cout<<”  “;
gotoxy(i,21);cout<<”      “;
gotoxy(i+1,22);cout<<”   “;
}

}
}

void dequeue()
{
if(head==NULL)
{
gotoxy(1,8); cout<<“antrean kosong !”;
delay();

}
else
{
jml=jml-1;
char delete_element=head->kar;
node *temp;
temp=head;
head=head->next;
delete temp;

for(int i=69;i<=76;i++)
{
gotoxy(i+1,20); cout<<” O”;
gotoxy(i,21); cout<<“=(“<<delete_element<<“)=”;
gotoxy(i+1,22); cout<<“| |”;
delay();
gotoxy(i+1,20); cout<<”  “;
gotoxy(i,21); cout<<”      “;
gotoxy(i+1,22); cout<<”   “;
}
int byk=0;

while(byk!=jml)
{
byk=byk+1;
for(int i=69-byk*6;i<=75-byk*6;i++)
{
gotoxy(i+1,20); cout<<” O”;
gotoxy(i,21); cout<<“=(“<<head->kar<<“)=”;
gotoxy(i+1,22); cout<<“| |”;
delay();
if(i!=75-byk*6)
{
gotoxy(i+1,20); cout<<”  “;
gotoxy(i,21); cout<<”      “;
gotoxy(i+1,22); cout<<”   “;
}
}
}
}
}

void input()
{
gotoxy(1,1);cout<<“1.Enqueue”;
gotoxy(1,2);cout<<“2.Dequeue”;
gotoxy(1,3);cout<<“3.Exit”;
do
{
gotoxy(1,4);cout<<“masukkan pilihan anda[1/2/3] : “;
gotoxy(32,4);cin>>pil;
gotoxy(32,4);cout<<”  “;
switch(pil)
{
case ‘1’:
{
if(jml<10)
{
jml=jml+1;
enqueue();
}
else
{
gotoxy(1,8); cout<<“antrean penuh !”;
delay();
gotoxy(1,8); cout<<” “;
}
break;
}
case ‘2’:
{
dequeue();
break;
}
case ‘3’:
{
exit(1);
break;
}
}
}while(1);
}

void main()
{
buatnodebaru();
jml=0;
clrscr();
input();
getch();
}
void delay()
{
for(int y=1;y<100;y++)
for(int x=1;x<100;x++)
for(int p=1;p<100;p++)
cout<<“”;
}

 

program Queue diatas cukup sederhana, walaupun menggunakan link list. disini tidak menggunakan class, tapi linklist dideklarasikan menggunakan struct , seperti yang telah saya tuliskan di halaman depan blog ini menggenai struct, dalam program ini karakter yang dimasukan ke antrian diinputkan secara otomatis melalui keyboard. didalam program diatas fungsi push menggunakan sebuah parameter dengan variabel bertipe char bernama ch. fungsinya untuk menampung karakter  yang diinputkan. untuk fungsi pushnyajuga sama saja membuatnya, hanya menyimpan karakter di now->kar=ch;

pointer now, adalah pointer baru yang dibuat. saat antrian masuk,  dan now->next=NULL, menunjukan yaitu pointer yang ditunjuk setelah now adalah kosong.

setelah itu jika head masih kosong maka now akan menjadi kepala sekaligus ekor.

tail=now;

head=now;

tapi jika tidak maka, ekor akan menjadi tail->next = now;

selamat mencoba;

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