c语言循环队列练习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c语言循环队列练习
//循环队列练习2012.7.22
#include
#include
#include
void init_queue(struct queue *ps , int len );//初始化函数
int empty_queue(struct queue *ps); //判断队列是否为空int full_queue(struct queue *ps, int len); //判断队列是否为满void en_queue(struct queue *ps, int val, int len);//入队
void out_queue(struct queue *ps, int len); //出队
void traverse_queue(struct queue *ps, int len); //显示队
void clear_queue(struct queue *ps); //清空队
struct queue
{int *pbase;
int front;
int rear;
};
//主函数
int main(void)
{
int len;
int val;
struct queue s;
printf("请输入想申请的静态队列空间大小:");
scanf("%d",&len);
printf("初始化中..................\n");
init_queue(&s,len);
printf("初始化完毕!\n");
//入列测试
printf("请输入入队信息!\n"); scanf("%d",&val);
en_queue(&s, val, len); scanf("%d",&val);
en_queue(&s, val, len); scanf("%d",&val);
en_queue(&s, val, len); scanf("%d",&val);
en_queue(&s, val, len); scanf("%d",&val);
en_queue(&s, val, len);
//显示测试
printf("显示全部内容!\n"); traverse_queue(&s, len);
//出列测试
printf("出列!\n");
out_queue(&s, len);
printf("显示全部内容!\n"); traverse_queue(&s, len); printf("出列!\n");
out_queue(&s, len);
printf("显示全部内容!\n"); traverse_queue(&s, len);
//清空测试
printf("清空!\n");
clear_queue(&s);
printf("显示全部内容!\n"); traverse_queue(&s, len); return 0;
}
//初始化函数
void init_queue(struct queue *ps , int len ) {
ps->pbase = (int *)malloc(sizeof(int) * len); if(ps == NULL) exit(-1);
else
{
ps->front = 0;
ps->rear = 0;
}
return ;
}
//判断队列是否为空
int empty_queue(struct queue *ps)
{
if(ps->front == ps->rear)
return 1;
else
return 0;
}
//判断队列是否为满
int full_queue(struct queue *ps, int len)
{ if( (ps->rear +1) % len == ps->front)
return 1;
else
return 0;
}
//入队函数
void en_queue(struct queue *ps, int val , int len) {
if(full_queue(ps,len) == 1)
{ printf(" 队列已满,不能再入!\n");
return;
}
else
{
ps->pbase[ps->rear] = val;
ps->rear = (ps->rear +1) % len;
}
return;
}
//出队函数
void out_queue(struct queue *ps, int len) {
if(empty_queue(ps) == 1)
{ printf("队列也空,不能再出!\n");
return;
}
else
{ printf("%d",ps->pbase[ps->front]);
ps->front = (ps->front + 1) % len;
}
printf("\n");
return ;
}
//显示队列
void traverse_queue(struct queue *ps, int len) {
int i;
i = ps->front;
if(i == ps->rear)
{
printf("队列为空!\n\n");
return ;
}
while(1)
{
if(i == ps->rear)
break;
printf("%d\n",ps->pbase[i]);
i = (i+1) % len;
}
printf("\n");
return;
}
//清空队列
void clear_queue(struct queue *ps)
{
int i;
if(empty_queue(ps) == 1)
printf("队列为空,不能再进行清空操作!\n"); else
{
ps->front =0;
ps->rear = 0;
}
return;
}。

相关文档
最新文档