c语言队列如何表示,队列的链式表示和实现(C语言)
#include
#include
#define OK 1;
#define ERROR 0;
#define OVERFLOW 0;
#define TURE 1;
#define FALSE 0;
typedef int Status;
typedef char QElemType; //队型数据
//链队中结点的定义
typedef struct QNode {
QElemType data; //数据域
struct QNode *next; //指针域
}QNode,*QueuePtr;
//链队的定义
typedef struct {
QueuePtr front; //队头指针
QueuePtr rear; //队尾指针
}LinkQueue;
//链队的初始化
Status InitQueue(LinkQueue *queue){
queue->front=queue->rear=(QueuePtr)malloc(sizeof(QNode));
if(!queue->front) return OVERFLOW;
queue->front->next=NULL; //头结点next域置空
return OK;
}
//链队的销毁
Status DestroyQueue(LinkQueue *queue){
QNode *p;
while(queue->front){
p=queue->front->next;
free(queue->front);
queue->front=p;
}
return OK;
}
//元素入队
Status EnQueue(LinkQueue *queue,QElemType elem){
QueuePtr p=(QueuePtr)malloc(sizeof(QNode));
if(!p) return OVERFLOW;
p->data=elem;
p->next=NULL;
queue->rear->next=p;
queue->rear=p;
return OK;
}
//元素出队
Status DeQueue(LinkQueue *queue,QElemType *elem){
if(queue->front==queue->rear) return ERROR;
QueuePtr p=queue->front->next; //p指向首元(队头元素)
*elem=p->data; //出队元素的值保存到elem
queue->front->next=p->next;
if(p==queue->rear) queue->rear=queue->front; //如果出队的是最后一个元素
free(p);
return OK;
}
//取队头元素
QElemType GetHead(LinkQueue queue){
if(queue.front==queue.rear) return ERROR;
return queue.front->next->data;
}
int main(void){
LinkQueue queue1; //定义一个链队
//初始化
Status initQueueResult = InitQueue(&queue1);
printf("队列queue1初始化结果:%d\n",initQueueResult);
//元素入队
QElemType elem1='Y',elem2='C';
Status enResult = EnQueue(&queue1,elem1);
printf("入队执行结果:%d\n",enResult);
EnQueue(&queue1,elem2); //将elem2也入队
printf("队尾元素值:%c\n",queue1.rear->data);
//元素出队
QElemType elem3; //出队的数据放入elem3
Status deResult = DeQueue(&queue1,&elem3);
printf("出队执行结果:%d\n",deResult);
printf("出队元素值:%c\n",elem3);
printf("队尾元素值:%c\n",queue1.rear->data);
//取队头元素
QElemType queueHeadValue = GetHead(queue1);
printf("获取队头元素值:%c\n",queueHeadValue);
//链队销毁
Status destroyResult = DestroyQueue(&queue1);
printf("链队销毁结果:%d\n",destroyResult);
printf("\nEND");
return 0;
}
标签:return,队列,next,queue,queue1,链式,front,C语言,rear
来源: https://www.cnblogs.com/petitepluie/p/14599401.html
c语言队列如何表示,队列的链式表示和实现(C语言)相关推荐
- 队列的定义、循环队列的顺序存储结构及链式存储结构
文章目录 1 队列的定义 1.1 文字定义 1.2 代码定义 2 循环队列 2.1 循环队列的定义 2.2 循环队列的顺序存储结构 3 队列的链式存储结构 3.1 链队列的入队操作 3.2 链队列的出 ...
- 线性表(链式存储结构)C语言
文章目录 一.线性表的链式存储结构 二.代码 1.头文件与宏定义: 2.对链表的定义及主要使用函数: 3.测试函数(主函数): 三.运行结果 一.线性表的链式存储结构 线性表的链式存储结构的特点是用一 ...
- 数据结构之线性表——(二、链式存储结构)[c语言]
数据结构之线性表--(二.链式存储结构-单链表) 链式存储结构以及基本运算的实现 背景:由于线性表的存储特点是用物理上的相邻实现逻辑上的相邻,他要求用连续的存储单元顺序存储线性表中的各个元素,所以,对 ...
- 线性表的链式存储结构(C语言版)
上一篇博文我对数据结构中线性表的顺序存储结构顺序表(http://12172969.blog.51cto.com/12162969/1916336)按照我的理解做了总结,今天我继续对顺序表的另一种存储 ...
- c语言二叉树链式存储,二叉树链式存储基本操作(C语言)
1.二叉链的定义 LinkBinTree.h文件 /** 二叉树结点结构 */ typedef struct _binnode { int data; struct _binnode * lchild ...
- 栈的链式存储结构(C语言实现)
简要 链栈就是利用单链表作为栈的存储结构,单链表的第一个节点为栈顶,而最后一个节点为栈底,链栈既可以带头节点也可以不带头节点. 实现过程 实现代码 #include<iostream> # ...
- 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似, 例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶 ...
- c语言建立队列(顺序队列、循化队列和链式队列)
c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...
- 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...
还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表. 什么是线性表 线性表的划分是从数据的逻辑结构上进行的.线性指的是在数据的逻辑结构上是线性的.即在数据元素的非空有限集中 (1) 存在唯一的 ...
- 线性表:链式队列算法实现
链式队列介绍 队列是一种受限制的线性表,有先进先出的特性.那么既然是线性表那肯定对应有2种不同的存储结构咯.链式队列呢,就是采用链式存储结构构成的队列.所以呢本次编写链队列呢 采用以前写的企业级单链表 ...
最新文章
- qq浏览器网页翻译_科研利器 | NCBI网站影响因子与网页翻译插件安装指南
- HDU 3785 寻找大富翁(sort排序或优先队列)
- Spring4.x(3)---工厂模式设计IOC容器
- 【RMAN】正确删除归档日志的方式
- 少儿是先学计算机 还是学机器人,孩子学机器人好还是少儿编程好
- 推荐两个BAT编辑器
- js页面打印去掉页眉页脚
- 牛客练习赛53 (E 老瞎眼 pk 小鲜肉) 线段树+离线
- 第七章文件与数格式化
- 电脑C盘空间不足,突然变红,请检查AppData\Roaming
- 浙大版《C语言程序设计实验与习题指导(第4版)》题目集-编程题-实验1-1-Hello World!
- 如何解决爬虫程序返回429
- Web安全——文件包含漏洞
- MySQL数据库day01
- 今日简报 每日精选12条新闻简报 每天一分钟 知晓天下事 4月24日
- GO : go test -v 测试错误:panic: test timed out after 10m0s 。。。exit status 2
- 微信公众号第三方平台投票
- <会说话是本事>的记录文摘
- 人与狗的感人故事(真实故事)
- MES上线的实施流程