Sau đây là bài hoàn chỉnh:
C Code:
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <dos.h> #include <string.h> #include <math.h> #define MAX 50 #define TRUE 1 #define FALSE 0 typedef struct{ int mahang; char ten[20]; } hang; typedef struct { int front, rear; hang node[MAX]; } queue; /* nguyen mau cua ham*/ void Initialize( queue *pq); int Empty(queue *); void Insert(queue *, hang x); hang Remove(queue *); void Traver(queue *); /* Mo ta ham */ void Initialize ( queue *pq){ pq->front = pq->rear = MAX -1; } int Empty(queue *pq){ if (pq->front==pq->rear) return(TRUE); return(FALSE); } void Insert(queue *pq, hang x){ if (pq->rear==MAX-1 ) pq->rear=0; else (pq->rear)++; if (pq->rear ==pq->front){ delay(2000);return; } else pq->node[pq->rear]=x; } hang Remove(queue *pq){ if (Empty(pq)){ delay(2000); } else { if (pq->front ==MAX-1) pq->front=0; else pq->front++; } return(pq->node[pq->front]); } void Traver( queue *pq){ int i; if(Empty(pq)){ return; } if (pq->front ==MAX-1) i=0; else i = pq->front+1; while (i!=pq->rear){ if(i==MAX-1) i=0; else i++; } } void main(void){ queue q; char chucnang, front1; char c; hang mh; clrscr(); Initialize(&q); do { clrscr(); switch(chucnang){ case 1: Insert(&q,mh);break; case 2: if (!Empty(&q)){ mh=Remove(&q); } else { delay(1000); } break; case 3: front1=(q.front==MAX-1)?0:q.front+1; break; case 4: break; case 5: Traverse(&q);delay(2000);break; } } while(chucnang!=0); }