Jumat, 08 Januari 2010

queue

#include
#include
#define Head(Q) (Q).Head
#define Tail(Q) (Q).Tail

typedef struct
{ int Head; int Tail;
int Isi [6]; }Queue;
typedef enum
{ false,
true }boolean;
void CreateQueue (Queue *Q);
/*membentuk antrian kosong*/
boolean IsEmptyQueue (Queue Q);
/*mengecek apakah antrian kosong*/
boolean IsFullQueue (Queue Q);
/*mengecek apakah antrian penuh*/
void EnQueue (Queue *Q, int E);
/*memasukkan elemen E ke dalam antrian Q*/
void DeQueue (Queue *Q, int *E);
/*mengeluarkan elemen E dari antrian Q*/
void PrintQueue (Queue Q);

main()
{/*kamus*/
Queue A; int x;
/*algoritma*/
clrscr();
CreateQueue(&A);
PrintQueue(A);
printf("\n\nEnQueue\n");
EnQueue(&A,1); PrintQueue(A);
EnQueue(&A,3); PrintQueue(A);
EnQueue(&A,6); PrintQueue(A);
EnQueue(&A,2); PrintQueue(A);
EnQueue(&A,8); PrintQueue(A);
printf("\n\nDeQueue\n");
DeQueue(&A,&x); PrintQueue(A);
DeQueue(&A,&x); PrintQueue(A);
DeQueue(&A,&x); PrintQueue(A);
DeQueue(&A,&x); PrintQueue(A);
DeQueue(&A,&x); PrintQueue(A);

getch();
}

/*Body Prototipe*/
void CreateQueue (Queue *Q )
{ /*kamus lokal*/
int i;
/*algoritma*/
Head(*Q)=0;
Tail(*Q)=0;
for(i=1;i<=5;i++)
{(*Q).Isi[i]=0;}
}
boolean IsEmptyQueue (Queue Q)
{ return((Head(Q)==0) && (Tail(Q)==0));

}
boolean IsFullQueue (Queue Q)
{ return((Head(Q)==1) && (Tail(Q)==5));

}
void EnQueue (Queue *Q, int E)
{ if (IsEmptyQueue(*Q))
{Head(*Q)=1;}
if (!IsFullQueue(*Q))
{Tail(*Q)++;
(*Q).Isi[Tail(*Q)]=E;
}
}
void DeQueue (Queue *Q, int *E)
{ /*kamus lokal*/
int i;
/*algoritma*/
if(!IsEmptyQueue(*Q))
{ (*E)=(*Q).Isi[Head(*Q)];
for(i=1;i {(*Q).Isi[i]=(*Q).Isi[i+1];}
(*Q).Isi[Tail(*Q)]=0;
Tail(*Q)=Tail(*Q)-1;
}
if(Tail(*Q)==0)
{Head(*Q)==0;}
}
void PrintQueue (Queue Q)
{/*kamus lokal*/
int i;
/*algoritma*/
printf("\ncetak antrian\n");
for(i=1;i<=5;i++)
{printf("\t%d",Q.Isi[i]);}
}


Tidak ada komentar:

Posting Komentar