博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言 链队列基本操作
阅读量:5150 次
发布时间:2019-06-13

本文共 2847 字,大约阅读时间需要 9 分钟。

C语言链队列基本操作

#include 
#include
#include
/* C语言链队列基本操作 2014年7月11日10:11:41*/typedef int qType;typedef struct node{ qType data; struct node *pNext;}Node,*pNode;typedef struct queue{ pNode front; pNode rear;}linkQ,*pLinkQ;//初始化队列void initQueue(linkQ *);//入队void enQueue(linkQ *,qType);//出队void deQueue(linkQ *,qType *);int main(){ linkQ q; qType data,reval; int i; initQueue(&q); printf("请输入5个整数:"); for(i=0; i<5; i++) { scanf("%d",&data); enQueue(&q,data); } printf("\n输出结果为:"); while(q.front != q.rear) { deQueue(&q,&reval); printf("%d ", reval); } printf("\n"); return 0;}void initQueue(linkQ * q){ q->front = q->rear = (pNode)malloc(sizeof(Node)); if(!q->front) { exit(-1); } q->front->pNext = NULL; return ;}void enQueue(linkQ * q,qType data){ pNode pNew; pNew = (pNode)malloc(sizeof(Node)); if(!pNew) { exit(-1); } pNew->data = data; pNew->pNext = NULL; q->rear->pNext = pNew; q->rear = pNew; return ;}void deQueue(linkQ * q,qType *val){ pNode pNew; if(q->front == q->rear) { exit(-1); } pNew = q->front->pNext; *val = pNew->data; q->front->pNext = pNew->pNext; if(q->rear == pNew) { q->rear = q->front; } free(pNew); return ;}
View Code

 代码二

#include 
#include
#include
/* C语言链队列基本操作 2014年7月11日10:11:41*/typedef int qType;typedef struct node{ qType data; struct node *pNext;}Node,*pNode;typedef struct queue{ pNode front; pNode rear;}linkQ,*pLinkQ;//初始化队列void initQueue(pLinkQ);//入队void enQueue(pLinkQ,qType);//出队void deQueue(pLinkQ,qType *);int main(){ linkQ q; qType data,reval; int i; initQueue(&q); printf("请输入5个整数:"); for(i=0; i<5; i++) { scanf("%d",&data); enQueue(&q,data); } printf("\n输出结果为:"); while(q.front != q.rear) { deQueue(&q,&reval); printf("%d ", reval); } printf("\n"); return 0;}void initQueue(pLinkQ q){ q->front = q->rear = (pNode)malloc(sizeof(Node)); if(!q->front) { exit(-1); } q->front->pNext = NULL; return ;}void enQueue(pLinkQ q,qType data){ pNode pNew; pNew = (pNode)malloc(sizeof(Node)); if(!pNew) { exit(-1); } pNew->data = data; pNew->pNext = NULL; q->rear->pNext = pNew; q->rear = pNew; return ;}void deQueue(pLinkQ q,qType *val){ pNode pNew; if(q->front == q->rear) { exit(-1); } pNew = q->front->pNext; *val = pNew->data; q->front->pNext = pNew->pNext; if(q->rear == pNew) { q->rear = q->front; } free(pNew); return ;}
View Code

 

转载于:https://www.cnblogs.com/kingshow123/p/queue.html

你可能感兴趣的文章
对MySql查询缓存及SQL Server过程缓存的理解及总结
查看>>
关于构造函数的一点理解
查看>>
.NetMVC过滤器
查看>>
HDU-1754I Hate It 线段树区间最值
查看>>
【BZOJ-1692&1640】队列变换 后缀数组 + 贪心
查看>>
Stream/Bytes[]/Image对象相互转化
查看>>
还是畅通工程(最小生成树入门基础题)
查看>>
gearman的安装与使用
查看>>
hdu3400(三分套三分)
查看>>
关于Delphi中预编译指令的使用方法
查看>>
Cisco AP-AP重置操作
查看>>
UCS内存问题排查
查看>>
HDU 3555 Bomb 数位DP 入门
查看>>
JavaWeb 学习008-今日问题(非空验证尚未解决) 2016-12-2
查看>>
涂鸦板
查看>>
Invert Binary Tree
查看>>
iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除...
查看>>
第七章
查看>>
viewdidload的调用和viewcontroller的生命周期
查看>>
Lock wait timeout exceeded
查看>>