c语言编程安全队列,C语言编程队列的实现
queue.c
功能函数:
#include "queue.h"
static void CopyToNode(Item item,Node *pn)
{
pn->item = item;
}
static void CopyToItem(Node *pn, Item *pi)
{
*pi = pn->item;
}
/* 把队列初始化为空,就是设置尾指针为NULL并设置项数(items成员)为0 */
void InitializeQueue(Queue *pq)
{
pq->front = pq->rear = NULL;
pq->items = 0;
}
bool QueueIsFull( const Queue *pq)
{
return (pq->items == MAXQUEUE);
}
bool QueueIsEmpty( const Queue *pq)
{
return (pq->items == 0);
}
int QueueItemCount(const Queue *pq)
{
return pq->items;
}
bool EnQueue( Item item,Queue *pq)
{
Node * pnew;
if (QueueIsFull(pq))
{
return false;
}
pnew = (Node *)malloc(sizeof(Node));
if (pnew == NULL)
{
fprintf(stderr, "Unable to allocate memory!\n");
exit(1);
}
CopyToNode(item,pnew);
pnew->next = NULL;
if (QueueIsEmpty(pq))
{
pq->front = pnew;/* 项目位于队列首端 */
}
else
{
pq->rear->next = pnew;/* 链接到队列尾端 */
}
pq->rear = pnew;/* 记录队列尾端的位置 */
pq->items++;/* 队列项目个数增1 */
return true;
}
bool DeQueue( Item *pitem, Queue *pq)
{
Node *pt;
if (QueueIsEmpty(pq))
{
return false;
}
CopyToItem(pq->front,pitem);
pt = pq->front;
pq->front = pq->front->next;
free(pt);
pq->items--;
if (pq->items == 0)
{
pq->rear = NULL;
}
return true;
}
void EmptyTheQueue(Queue *pq)
{
Item dummy;
while (!QueueIsEmpty(pq))
{
DeQueue(&dummy,pq);
}
}
测试程序:
#include "queue.h"
int main(void)
{
Queue line;
Item temp;
char ch;
InitializeQueue(&line);
puts("Testing the queue interface, type a to add a value,");
puts("type d to delete a value ,and type q to quit");
while((ch =getchar())!= 'q')
{
if (ch !='a' && ch != 'd')
{
continue;
}
if (ch == 'a')
{
printf("integer to add:\n");
scanf("%d",&temp);
if (!QueueIsFull(&line))
{
printf("Putting %d into queue\n",temp);
EnQueue(temp,&line);
}
else
{
puts("Queue is full");
}
}
else
{
if (QueueIsEmpty(&line))
{
puts("没有了");
}
else
{
DeQueue(&temp,&line);
printf("删除了%d\n",temp);
}
}
printf("%d item in queue\n",QueueItemCount(&line));
puts("type a to add ,d to delete, q to quit:");
}
EmptyTheQueue(&line);
puts("bye!");
}
c语言编程安全队列,C语言编程队列的实现相关推荐
- 贪吃蛇统计分数的c语言代码,C/C++编程笔记:C语言贪吃蛇源代码控制台(二),分数和食物!...
接上文<C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!>如果你在学习C语言开发贪吃蛇的话,零基础建议从上一篇开始哦!接下来正式开始吧! 三.蛇的运动 上次我已经教大家画 ...
- 语言翻译成汇编语言_学习编程有没有必要从C语言和C++学起?应该怎么学?
硬件层级:这里也就是实体硬件,包括:CPU.内存.显卡等等...这些都不属于软件的范畴内. 汇编层级:在之前没有C/C++以及java之前,是汇编的年代.那么汇编语言对于我们来说,可读性是很查的,不适 ...
- 换硬币c语言编程_如何才能成为编程高手?别人都不告诉你的东西,我来说给你听...
在IT行业摸爬滚打十几年的应该知道,下面简单说说关于编程需要掌握的技术与相关知识.很多人感觉编程很难.很多人问我,我英语不好,数学不好能做编程吗? 我非常肯定的说,能做编程.编程的领域很广泛.细分出来 ...
- 自学编程是从python语言还是c语言开始-初中生想学编程,请问先学C语言好还是先学Python?...
市面上常见的几种编程语言就是:c,c++,c#,java,python,这几种我都学过,所以建议从python开始. 原因就是: (1)python简单好上手 c的数据类型很麻烦,而python就相对 ...
- 自学编程是从python语言还是c语言开始-非计算机专业大学生想自学编程应该学C语言还是学Python?...
之前总结的文章,分享过来,希望对你有帮助.windliang:到底学哪一门编程语言zhuanlan.zhihu.com 发展进程 学哪一门编程语言,我们不妨先梳理一下语言的发展过程. 机器语言 计算 ...
- python和c哪个适合入门-编程入门选什么语言好?C 语言还是Python ?为你解析
前面我分享过计算机行业已经成了学校选择排名第一,家长和学生都很看好计算机类专业.现在IT行业也越来越火爆,程序员越来越被人看好.面对相比同龄人高薪资的诱惑,人们很难不心动,即使秃头也值得! 那么问题来 ...
- python编程和c语言编程的区别-C语言 python Java 等主要流行编程语言优劣对比
如果一个IT小白准备进入IT开发行列,是该选Java呢还是另外的开发语言呢?开发一直是一个倍受争议的话题,那么其实这个问题并没有标准答案. 分享之前我还是要推荐下我自己的C/C++学习交流群:三四零六 ...
- “主要的编程范型”及其语言特性关系(多图)
"主要的编程范型"(The principal programming paradigms)这幅图,其实出现得不算早,作者在2007年完成了该图的1.0版,到2008年更新至v1. ...
- 《快乐编程大本营》java语言训练班-第4课:java流程控制
<快乐编程大本营>java语言训练班-第4课:java流程控制 第1节. 顺序执行语句 第2节. 条件分支语句:if条件语句 第3节. 条件分支语句:switch 条件语句 第4节. 条件 ...
- 二级c语言上机编程技巧,二级C语言上机编程题技巧总结
二级C语言上机编程题技巧 一. 方法总结 1. 二级C语言上机编程题在二级上机考试中属于较难题型,因此很多同学都害怕通过不了.综合 往年的考试,结合考试大纲,每年考试的编程题都有一定的规律和方法,只要 ...
最新文章
- Redis (二)_ jedis的使用
- R语言glmnet拟合岭回归模型实战:岭回归模型的模型系数(ridge regression coefficients)及可视化、岭回归模型分类评估计算(混淆矩阵、accuracy、Deviance)
- CVPR 2022放榜!录用 2067 篇,接收数量上升24%
- 002-Zabbix-网络设备自动监控(cisco)
- 【PC工具】在线MP3转WAV工具,MP3文件转换成arduino可以直接播放的wav格式
- 个人创业做什么好?以下这几个值得考虑
- XML文件转换成字符串互相转换操作
- linux编译bzip2,linux bzip2 命令详解
- super(XXXX,self).__init__()在类中的作用
- 国际化的支持--多编码问题
- 国外计算机应用基础,计算机应用基础试题(国外英文资料).doc
- 彼得德鲁克《卓有成效的管理者》——阅读摘要
- 明尼苏达大学双城分校计算机科学,明尼苏达大学双城分校计算机专业研究生需要满足哪些条件?...
- mysql tar 卸载_mysql linux 安装卸载
- 1.9w粉丝带动近100w播放量,推广黑马不止一位
- 泰国计算机专业大学排名,清迈大学在泰国的排名
- idear右边的依赖视图没了_APP开发中出现提到的Idear是什么意思
- PAT 1124 Raffle for Weibo Followers
- 学术英语理工(第二版)Unit1课文翻译
- java定义语法解析器,java开发工具intellij idea使用教程:定义语法和解析器.pdf
热门文章
- LeetCode 64. 最小路径和(DP)
- 协程asyncio_Asyncio深入浅出
- ztree在刷新时第一个父节点消失_第一个关于中式菜谱的智能问答机器人小程序正式上线啦...
- java 以太坊 智能合约_web3j教程:java使用web3j开发以太坊智能合约交易
- 生物信息考研C语言,四川大学生物信息学初试经验分享
- Android远程调试的探索与实现
- Yann LeCun最新访谈:能量模型是通向自主人工智能系统的起点
- SpringBoot RequestBody ajax提交对象
- 从源码的角度再看 React JS 中的 setState
- 树状数组-神奇的二进制