您的位置:首页 > 其它

顺序队列

2015-09-09 09:25 169 查看
#include "stdio.h"
#include <malloc.h>
#define MAXSIZE 10

typedef int ElemType;
typedef struct Node{
int front,rear;
ElemType elem[MAXSIZE];
}SqQueue;

SqQueue * InitQueue(){
SqQueue *q;
q=(SqQueue *)malloc(sizeof(SqQueue));
if(q==NULL){
printf("初始化内存失败!");
return NULL;
}else{
q->front=q->rear=0;
return q;
}
}
int QueueLength(SqQueue *q){
return (q->rear-q->front+MAXSIZE)%MAXSIZE;
}
int enQueue(SqQueue *q,ElemType e){
if ((q->rear+1)%MAXSIZE==q->front){
return 0;
}
q->rear = (q->rear+1) % MAXSIZE;
q->elem[q->rear]=e;
return 1;
}

int deQueue(SqQueue *q){
if(q->front==q->rear){
return 0;
}else{
q->front = (q->front+1)% MAXSIZE;
return q->elem[q->front];
}
}

void  ClearQueue(SqQueue *q){
free(q);
}
int QueueEmpty(SqQueue *q){
return q->front ==q->rear;

}
main(){
int i=0;
SqQueue *q;
q=InitQueue();
printf("进队列的顺序为:\n");
for(i;i<10;i++){
printf("%d\t",i+1);
if(enQueue(q,i+1)==0){
printf("队满不能进队列!");
}
}
printf("\n");
printf("队列的长度顺序为:%d\t",QueueLength(q));
printf("\n");

printf("出队的顺序为:\n");
printf("%d\t",deQueue(q));
printf("%d\t",deQueue(q));
printf("%d\t",deQueue(q));

printf("%d\t",deQueue(q));
printf("%d\t",deQueue(q));
printf("%d\t",deQueue(q));

printf("%d\t",deQueue(q));
printf("%d\t",deQueue(q));
printf("%d\t",deQueue(q));

printf("%dyy\t",deQueue(q));
printf("hh%d\t",deQueue(q));
printf("\n");

if(QueueEmpty(q)){
printf("队列已经空\n");
}

printf("\n");
printf("释放队列\n");

ClearQueue(q);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: