#include<stdio.h>
#include<stdlib.h>
#define ElementType int
#define MAXSIZE 10
//队列的循环数组实现方式
typedef struct QueueRecord{
int Front;
int Rear;
int Size;
ElementType Array[MAXSIZE];
}Queue;
static Queue *q;
void InitialQueue();
int IsEmpty();
int IsFull();
void MakeEmpty();
void Enqueue(ElementType);
ElementType Dequeue();
void error(char *);
void InitialQueue(){
int i;
q=(Queue *)malloc(sizeof(Queue));
q->Front = 0;
q->Rear = -1;
q->Size = 0;
for(i=0;i<MAXSIZE;i++){
q->Array[i]=0;
}
}
int IsEmpty(){
if(q->Size == 0){
return 1;
}
return 0;
}
int IsFull(){
if(q->Size == MAXSIZE){
return 1;
}
return 0;
}
void MakeEmpty(){
q->Front = 0;
q->Rear = -1;
q->Size = 0;
}
void Enqueue(ElementType e){
if(IsFull()){
error("queue has been full");
return;
}
if(q->Rear < 9){
q->Rear++;
}
else{
q->Rear =0;
}
q->Array[q->Rear]=e;
q->Size ++;
}
ElementType Dequeue(){
ElementType e;
if(IsEmpty()){
error("queue has been empty");
return 0;
}
q->Size--;
e = q->Array[q->Front];
if(q->Front == 9){
q->Front = 0;
}
else{
q->Front++;
}
return e;
}
void error(char *c){
printf("%s",c);
}
void main(){
int i;
InitialQueue();
//测试代码
for(i=0;i<10;i++){
Enqueue(i);
}
Dequeue();
Enqueue(2);
for(i=0;i<10;i++){
printf("%d",Dequeue());
}
}
数据结构:队列(循环数组实现)
最新推荐文章于 2022-05-14 14:33:34 发布