数据结构

include<stdio.h>

include<stdlib.h>

define max 30

typedef struct{
int *data;
int front,rear;
}circqueue;

//给队列赋值
int firstadd(circqueue q){
q->data=(int
)malloc(max*sizeof(int));
int x;
printf("请输入赋值数:");
scanf("%d",&x);
while(x!=0&&q->rear!=max-1){
q->data[q->rear++]=x;
printf("请输入赋值数:");
scanf("%d",&x);
}
return 0;
}

//返回队列的元素个数
int returnmath(circqueue *q){
return (q->rear-q->front+max)%max;
}

//将元素插入x插入队尾
int enqueue(circqueue *q,int x){
if((q->rear+1)%max==q->front){
return 0;
}
q->data[q->rear]=x;
q->rear=(q->rear+1)%max;
return 1;
}

//删除队头元素并将其返回
int dequeue(circqueue *q){
if(q->front==q->rear){
printf("队空,无法删除");
return 0;
}
q->front=(q->front+1)%max;
return 1;
}

//返回队头元素
int gotoqueue(circqueue *q){
return q->data[q->front];
}

//输出队列各个元素
void printfqueue(circqueue *q){
for(int i=q->front;i!=q->rear;i=(i+1)%max){
printf("输出元素为%d\n",q->data[i]);
}
}

//主函数中实现
main(){
circqueue q;
q=(circqueue
)malloc(sizeof(circqueue));
q->front=q->rear=0;
if(firstadd(q)0){
printf("赋值成功!\n");
}
printf("元素的个数为%d\n",returnmath(q));
int x;
printf("请输入进队元素");
scanf("%d",&x);
if(enqueue(q,x)
1){
printf("插入成功!\n");
}
else{
printf("队列已满,无法插入!\n");
}
if(dequeue(q)==1){
printf("删除队头成功!\n");
}
printf("队头元素为%d\n",gotoqueue(q));
printfqueue(q);
}

posted @ 2019-04-30 11:47  龙吕  阅读(76)  评论(0编辑  收藏  举报