链队列的c语言实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了链队列的c语言实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2369字,纯文字阅读大概需要4分钟。
内容图文
#include<stdio.h>
#include<stdlib.h>
#define QUEUE_MAX_SIZE 100
typedef int Status;
typedef int QElemtype;
typedef struct QNode{
QElemtype data;
struct QNode *next;
}*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
Status InitQueue(LinkQueue &Q){
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front) return 0;
Q.front->next=NULL;
return 1;
}
Status DestoryQueue(LinkQueue &Q){
while(Q.front){
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
return 1;
}
Status ClearQueue(LinkQueue &Q){
while(Q.front){
Q.rear=Q.front->next;
Q.front->data=NULL;
Q.front=Q.rear;
}
return 1;
}
Status IsQueueEmpty(LinkQueue &Q){
if(Q.front==Q.rear)return 1;
return 0;
}
Status QueueLength(LinkQueue &Q){
QNode *p;
int i=0;
p=Q.front;
while(p->next){
p=p->next;
i++;
}
return i;
}
Status GetHead(LinkQueue &Q,QElemtype &e){
if(Q.front==Q.rear) return 0;
e=Q.front->next->data;
return 1;
}
Status EnQueue(LinkQueue &Q,QElemtype e){
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p) return 0;
p->data=e;p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return 1;
}
Status DeQueue(LinkQueue &Q,QElemtype &e){
QueuePtr p;
p=Q.front->next;
if(Q.front==Q.rear) return 0;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p) Q.rear=Q.front;
free(p);
return 1;
}
Status PrintQueue(LinkQueue &Q){
QNode *p;
p=Q.front;
while(p->next){
p=p->next;
printf("%d\n",p->data);
}
return 1;
}
int main(){
LinkQueue q;
InitQueue(q);
int set,isclose;
QElemtype e;
while(1){
set=0;
printf(" 1.队尾插入元素\n 2.删除队头元素并输出\n 3.输出队列的长度\n 4.销毁队列\n 5.得到队头元素 \n 6.查询该队列是否为空 \n 7.输出整个队列中的所有元素\n 8.建立队列(在销毁后重建)\n");
scanf("%d",&set);
switch(set){
case 1:printf("请输入元素\n");scanf("%d",&e);if(EnQueue(q,e)) printf("插入成功\n");else printf("插入失败\n"); break;
case 2:if(DeQueue(q,e))printf("%d\n",e);else printf("队列里无元素\n");break;
case 3:printf("%d\n",QueueLength(q));break;
case 4:if(DestoryQueue(q)) printf("销毁成功\n");break;
case 5:if(GetHead(q,e)) printf("%d\n",e);break;
case 6:if(IsQueueEmpty(q)) printf("队列为空\n"); else printf("队列不为空\n");break;
case 7:PrintQueue(q);break;
case 8:if(InitQueue(q));printf("建立成功\n");break;
}
printf("结束输入0\n");
scanf("%d",&isclose);
if(!isclose) break;
}
return 0;
}
本文出自 “zjwzjw369” 博客,谢绝转载!
原文:http://zjwzjw369.blog.51cto.com/10388875/1661038
内容总结
以上是互联网集市为您收集整理的链队列的c语言实现全部内容,希望文章能够帮你解决链队列的c语言实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。