您的位置:首页 > 理论基础 > 数据结构算法

数据结构:队列(循环数组实现)

2013-02-23 23:26 645 查看
#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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: