c语言定义链式队列用菜单,数据结构之---C语言实现链式队列
//链式队列的存储
//杨鑫
#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语言实现链式队列相关推荐
- c语言定义64位的变量,李洪强-C语言9-C语言的数据,变量和常量
一.数据 图片文字等都是数据,在计算机中以0和1存储. (一)分类 数据分为静态数据和动态数据. ①. 静态数据:一些永久性的的数据,一般存储在硬盘中,只要硬盘没坏数据都是存在的.一般以文件的形式存储 ...
- c#语言定义文档pdf,C#如何更改Word的语言设置.pdf
C#如如何何更更改改Word的的语语言言设设置置 一般在创建或者打开一个Word文档时,如果没有进行过特殊设置的 ,系统默认的输入语言的是英语输入,但是为适应不同的 办公环境,我们其实是需要对文字嵌入 ...
- c语言输出单链表最大值与最小值,数据结构(C语言版)---顺序表与链表的比较...
1.存取方式 1)顺序表:可以顺序存取,也可以随机存取. 2)链表:只能从表头顺序存取. 2.逻辑结构与物理结构 1)顺序存储:逻辑上相邻,物理位置相邻. 2)链式存储:逻辑上相邻,物理位置不一定相邻 ...
- C语言 定义函数妇女 判定整数n,C语言 定义函数判断奇偶性
问题描述: C语言 定义函数判断奇偶性 这学期新开C语言,自己对这门课比较感兴趣,所以预习了一些没学的东西. 然后看到这道题: 编程c语言输入一批正整数以0或负数为结束标志求奇数的和要求定义和调用函数 ...
- 用c语言线性表的链式表示实现,数据结构-使用C语言 朱战立第2章线性表的链式表示.ppt...
数据结构-使用C语言 朱战立第2章线性表的链式表示 * 循环链表(circular linked list) 循环链表是表中最后一个结点的指针指向头结点,使链表构成环状 特点:从表中任一结点出发均可找 ...
- 循环队列的进队算法c语言,循环队列的定义,入队算法,出队算法,遍历算法,及其代码实现-Go语言中文社区...
队列 的定义: 一种可以是实现"先进先出"的存储结构.数据的进出类似于排队购票.队只允许队尾一端(rear)添加,在另一端队头(front)删除.队有队头(front)和队尾(re ...
- 数据结构(C语言)二叉树的链式存储与操作 11月18日
实验内容: 1.建立二叉树的二叉链表存储结构. 2.实现二叉树的先序.中序和后序三种遍历操作(验证性内容). 3. 用函数实现统计二叉树叶子结点个数.深度的功能. 4.实现二叉树的层次遍历(借用队列) ...
- 数据结构(C语言版) 第 三 章 栈与队列 知识梳理 + 作业习题详解
目录 一.栈 0.栈的基本概念 1.栈的实现 2.栈与递归 3.Hanoi塔问题 二.队列 0.队列的基本概念 1.队列的实现 2.循环队列 2.1循环队列的相关条件和公式: 3.链队列 4.链队列完 ...
- 数据结构-队列详解(类C语言版)
目录 队列的相关概念 定义 逻辑结构 存储结构 运算规则 实现方式 队列的基本操作 循环队列--队列的顺序表示和实现 队列的顺序存储结构 假溢出-引出循环队列 判断循环队列队空队满 循环队列的操作 队 ...
最新文章
- netstat -ano 查看机器端口占用情况
- UICountingLabel实现数字变化的动画效果-b
- 2015年12月书单推荐
- js node 打包mac应用_混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用
- eta 深度学习 参数_深度学习中的参数梯度推导(一)
- 回头再学Asp.net系列--基础篇(六)
- js中的局部变量和全局变量
- 机器学习模型效果评估
- com/android/dx/command/main,com/android/dx/command/dexer/Main : Unsupported major.minor version 52.0
- java callback 多线程_JAVA Callback效率测试
- linux驱动编写(platform总线和网卡驱动)
- Leetcode每日一题:面试题17.10.find-majority-element-lcci(主要元素)
- iOS中AutoLayout自动布局,自适应高度
- 朴素贝叶斯分类器python_朴素贝叶斯算法的python实现 -- 机器学习实战
- 多元统计分析-联合分析
- 运输计划 洛谷P2680
- 在线渐变配色网站分享
- 一个简单证件照的设计过程
- 冯小刚“开撕”崔永元,娱乐圈炒作就要进入3.0时代
- 一家椰子鸡店,凭什么让客户去了一趟又一趟?到底有什么样的魔力?