#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 文字定义 1.2 代码定义 2 循环队列 2.1 循环队列的定义 2.2 循环队列的顺序存储结构 3 队列的链式存储结构 3.1 链队列的入队操作 3.2 链队列的出 ...

  2. 线性表(链式存储结构)C语言

    文章目录 一.线性表的链式存储结构 二.代码 1.头文件与宏定义: 2.对链表的定义及主要使用函数: 3.测试函数(主函数): 三.运行结果 一.线性表的链式存储结构 线性表的链式存储结构的特点是用一 ...

  3. 数据结构之线性表——(二、链式存储结构)[c语言]

    数据结构之线性表--(二.链式存储结构-单链表) 链式存储结构以及基本运算的实现 背景:由于线性表的存储特点是用物理上的相邻实现逻辑上的相邻,他要求用连续的存储单元顺序存储线性表中的各个元素,所以,对 ...

  4. 线性表的链式存储结构(C语言版)

    上一篇博文我对数据结构中线性表的顺序存储结构顺序表(http://12172969.blog.51cto.com/12162969/1916336)按照我的理解做了总结,今天我继续对顺序表的另一种存储 ...

  5. c语言二叉树链式存储,二叉树链式存储基本操作(C语言)

    1.二叉链的定义 LinkBinTree.h文件 /** 二叉树结点结构 */ typedef struct _binnode { int data; struct _binnode * lchild ...

  6. 栈的链式存储结构(C语言实现)

    简要 链栈就是利用单链表作为栈的存储结构,单链表的第一个节点为栈顶,而最后一个节点为栈底,链栈既可以带头节点也可以不带头节点. 实现过程 实现代码 #include<iostream> # ...

  7. 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现

    1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似,  例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶 ...

  8. c语言建立队列(顺序队列、循化队列和链式队列)

    c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...

  9. 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...

    还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表. 什么是线性表 线性表的划分是从数据的逻辑结构上进行的.线性指的是在数据的逻辑结构上是线性的.即在数据元素的非空有限集中 (1) 存在唯一的 ...

  10. 线性表:链式队列算法实现

    链式队列介绍 队列是一种受限制的线性表,有先进先出的特性.那么既然是线性表那肯定对应有2种不同的存储结构咯.链式队列呢,就是采用链式存储结构构成的队列.所以呢本次编写链队列呢 采用以前写的企业级单链表 ...

最新文章

  1. qq浏览器网页翻译_科研利器 | NCBI网站影响因子与网页翻译插件安装指南
  2. HDU 3785 寻找大富翁(sort排序或优先队列)
  3. Spring4.x(3)---工厂模式设计IOC容器
  4. 【RMAN】正确删除归档日志的方式
  5. 少儿是先学计算机 还是学机器人,孩子学机器人好还是少儿编程好
  6. 推荐两个BAT编辑器
  7. js页面打印去掉页眉页脚
  8. 牛客练习赛53 (E 老瞎眼 pk 小鲜肉) 线段树+离线
  9. 第七章文件与数格式化
  10. 电脑C盘空间不足,突然变红,请检查AppData\Roaming
  11. 浙大版《C语言程序设计实验与习题指导(第4版)》题目集-编程题-实验1-1-Hello World!
  12. 如何解决爬虫程序返回429
  13. Web安全——文件包含漏洞
  14. MySQL数据库day01
  15. 今日简报 每日精选12条新闻简报 每天一分钟 知晓天下事 4月24日
  16. GO : go test -v 测试错误:panic: test timed out after 10m0s 。。。exit status 2
  17. 微信公众号第三方平台投票
  18. <会说话是本事>的记录文摘
  19. 人与狗的感人故事(真实故事)
  20. MES上线的实施流程

热门文章

  1. 【Springboot】日志
  2. 深度学习网络模型可视化netron
  3. 各种优化算法公式快速回忆优化器-深度学习
  4. java锁(公平锁和非公平锁、可重入锁(又名递归锁)、自旋锁、独占锁(写)/共享锁(读)/互斥锁、读写锁)
  5. LeetCode简单题之使每位学生都有座位的最少移动次数
  6. Cuda Stream流 分析
  7. 适用于Windows和Linux的Yolo-v3和Yolo-v2(下)
  8. 简化可视SLAM应用程序的开发
  9. ADAS系统长篇综述(下)
  10. 服务器技术综述(一)