//链式队列的存储

//杨鑫

#include

#include

typedef int QElemType;

//定义节点

typedef struct QNode

{

QElemType data;

struct QNode *next;

}QNode, *QueuePtr;

//定义指针

typedef struct

{

QueuePtr front;

QueuePtr rear;

}LinkQueue;

//插入元素e进入队列

void en_Queue(LinkQueue *q, QElemType e)

{

QueuePtr temp = (QueuePtr)malloc(sizeof(QNode));

if(temp)

{

temp->data = e;

temp->next = NULL;

q->rear->next = temp;

q->rear = temp;

}

}

//初始化队列

void init_Queue(LinkQueue *q)

{

q->front = q->rear = (QNode *)malloc(sizeof(QNode));

q->front->next = NULL;

}

//创建队列

void create_Queue(LinkQueue *q)

{

int n = 0;

init_Queue(q);

printf("请输入要进入队列的元素,以0结束!\n");

while(scanf("%d", &n))

{

if(n == 0)

break;

en_Queue(q, n);

}

}

//e元素出队

void de_Queue(LinkQueue *q, QElemType *e)

{

if(q->front == q->rear)

return;

QueuePtr temp = q->front->next;

if(q->front->next == q->rear)

q->rear = q->front;

*e = temp->data;

q->front->next = temp->next;

free(temp);

}

//判断队列是否为空

int is_Empty(LinkQueue *q)

{

if(q->front == q->rear)

return 1;

return 0;

}

//返回队列

int getlength_Queue(LinkQueue *q)

{

QueuePtr temp = q->front;

int i = 0;

while(temp != q->rear)

{

++i;

temp = temp->next;

}

return i;

}

//清空队列

void clear(LinkQueue *q)

{

QueuePtr temp = q->front->next;

while(temp)

{

QueuePtr tp = temp;

temp = temp->next;

free(tp);

}

temp = q->front;

q->front = q->rear = NULL;

free(temp);

}

//打印队列元素

void print_Queue(LinkQueue *q)

{

if(q->front == q->rear)

return;

QueuePtr temp = q->front->next;

while(temp != q->rear)

{

printf("%d ", temp->data);

temp = temp->next;

}

printf("%d", temp->data);

printf("\n");

}

//第一个数据出队

void top_Queue(LinkQueue *q, QElemType *e)

{

if(q->front == q->rear)

return;

*e = q->front->next->data;

}

int main()

{

int i = 0, k = 0, top = 0;

int len;

LinkQueue q;

create_Queue(&q);

top_Queue(&q, &top);

printf("队头的元素为:%d\n", top);

len = getlength_Queue(&q);

printf("遍历队中的所有元素:\n");

for(i = 0; i < len; i++)

{

de_Queue(&q, &k);

printf("%d ", k);

}

printf("\n");

clear(&q);

return 0;

}

c语言定义链式队列用菜单,数据结构之---C语言实现链式队列相关推荐

  1. c语言定义64位的变量,李洪强-C语言9-C语言的数据,变量和常量

    一.数据 图片文字等都是数据,在计算机中以0和1存储. (一)分类 数据分为静态数据和动态数据. ①. 静态数据:一些永久性的的数据,一般存储在硬盘中,只要硬盘没坏数据都是存在的.一般以文件的形式存储 ...

  2. c#语言定义文档pdf,C#如何更改Word的语言设置.pdf

    C#如如何何更更改改Word的的语语言言设设置置 一般在创建或者打开一个Word文档时,如果没有进行过特殊设置的 ,系统默认的输入语言的是英语输入,但是为适应不同的 办公环境,我们其实是需要对文字嵌入 ...

  3. c语言输出单链表最大值与最小值,数据结构(C语言版)---顺序表与链表的比较...

    1.存取方式 1)顺序表:可以顺序存取,也可以随机存取. 2)链表:只能从表头顺序存取. 2.逻辑结构与物理结构 1)顺序存储:逻辑上相邻,物理位置相邻. 2)链式存储:逻辑上相邻,物理位置不一定相邻 ...

  4. C语言 定义函数妇女 判定整数n,C语言 定义函数判断奇偶性

    问题描述: C语言 定义函数判断奇偶性 这学期新开C语言,自己对这门课比较感兴趣,所以预习了一些没学的东西. 然后看到这道题: 编程c语言输入一批正整数以0或负数为结束标志求奇数的和要求定义和调用函数 ...

  5. 用c语言线性表的链式表示实现,数据结构-使用C语言 朱战立第2章线性表的链式表示.ppt...

    数据结构-使用C语言 朱战立第2章线性表的链式表示 * 循环链表(circular linked list) 循环链表是表中最后一个结点的指针指向头结点,使链表构成环状 特点:从表中任一结点出发均可找 ...

  6. 循环队列的进队算法c语言,循环队列的定义,入队算法,出队算法,遍历算法,及其代码实现-Go语言中文社区...

    队列 的定义: 一种可以是实现"先进先出"的存储结构.数据的进出类似于排队购票.队只允许队尾一端(rear)添加,在另一端队头(front)删除.队有队头(front)和队尾(re ...

  7. 数据结构(C语言)二叉树的链式存储与操作 11月18日

    实验内容: 1.建立二叉树的二叉链表存储结构. 2.实现二叉树的先序.中序和后序三种遍历操作(验证性内容). 3. 用函数实现统计二叉树叶子结点个数.深度的功能. 4.实现二叉树的层次遍历(借用队列) ...

  8. 数据结构(C语言版) 第 三 章 栈与队列 知识梳理 + 作业习题详解

    目录 一.栈 0.栈的基本概念 1.栈的实现 2.栈与递归 3.Hanoi塔问题 二.队列 0.队列的基本概念 1.队列的实现 2.循环队列 2.1循环队列的相关条件和公式: 3.链队列 4.链队列完 ...

  9. 数据结构-队列详解(类C语言版)

    目录 队列的相关概念 定义 逻辑结构 存储结构 运算规则 实现方式 队列的基本操作 循环队列--队列的顺序表示和实现 队列的顺序存储结构 假溢出-引出循环队列 判断循环队列队空队满 循环队列的操作 队 ...

最新文章

  1. netstat -ano 查看机器端口占用情况
  2. UICountingLabel实现数字变化的动画效果-b
  3. 2015年12月书单推荐
  4. js node 打包mac应用_混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用
  5. eta 深度学习 参数_深度学习中的参数梯度推导(一)
  6. 回头再学Asp.net系列--基础篇(六)
  7. js中的局部变量和全局变量
  8. 机器学习模型效果评估
  9. com/android/dx/command/main,com/android/dx/command/dexer/Main : Unsupported major.minor version 52.0
  10. java callback 多线程_JAVA Callback效率测试
  11. linux驱动编写(platform总线和网卡驱动)
  12. Leetcode每日一题:面试题17.10.find-majority-element-lcci(主要元素)
  13. iOS中AutoLayout自动布局,自适应高度
  14. 朴素贝叶斯分类器python_朴素贝叶斯算法的python实现 -- 机器学习实战
  15. 多元统计分析-联合分析
  16. 运输计划 洛谷P2680
  17. 在线渐变配色网站分享
  18. 一个简单证件照的设计过程
  19. 冯小刚“开撕”崔永元,娱乐圈炒作就要进入3.0时代
  20. 一家椰子鸡店,凭什么让客户去了一趟又一趟?到底有什么样的魔力?

热门文章

  1. .net framework 25007 error
  2. c# winform窗口自适应各种分辨率类
  3. 3COM小型办公室有线局域网方案
  4. 推荐一个 Vue3 全家桶 + TS+ Vite2 + element-plus 的网站实战项目
  5. Springboot整合swagger指南
  6. 面试官问:什么是布隆过滤器?
  7. go gorm框架一对多查询代码示例
  8. Scala中的二维数组乘法
  9. Java GUI编程:swing创建窗体代码详解
  10. k8s kubectl create命令使用详解