IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 队列数据结构详解 -> 正文阅读

[数据结构与算法]队列数据结构详解

1.队列既可以用链表实现,也可以用顺序表实现。跟栈相反的是,栈一般用顺序表来实现,而队列我们常用链表来实现,称为链队列,它是后入前出(头结点进,尾结点出),头结点不存元素
实现代码:
typedef struct QNode//定义队列的链表结点
{
ElemType data;
struct QNode *next;
}QNode,*QueuePrt;

typedef struct
{
QueuePrt front,rear;//队头,尾指针
}LinkQueue;
代码思路:队列数据结构的定义和链表是一样的,然后再定义一个队列头尾指针。
2.创建一个队列要完成两个任务:一是在内存中创建一个头结点,二是将队列的头指针和尾指针都指向这个生成的头结点,因为此时是空队列
实现代码:
initQueue(LinkQueue *q)
{
q->front=q->rear=(QueuePtr)malloc(sizeof(QNode));
if(!q->front)
exit(0);
q->front->next = NULL;
}
代码思路:用malloc函数新开一个内存空间,然后头指针和尾指针都等于它,尾指针下一个为空
3.入队列操作
insertQueue(LinkQueue *q,ElemType e)
{
QueuePtr p;
p = (QueuePtr)malloc(sizeof(QNode));
if(p==NULL)
exit(0);
p->data = e;
p-next = NULL;
q->rear->next = p;
q->rear = p;

}
代码思路:新建一个结点,把为结点的下一个给它就行。
4.出队列操作是将队列中的第一个元素移出,队头指针不发生变化,改变头结点的next指针即可。
代码实现:
deleteQueue(LinkQueue *q,ElemType e)
{
QNode p;
if(q->front == q->rear)
{
return;
}
p = q->front->next;
e = p->data;
q->front->next = p->next;
if(q->rear==p)
{
q->front = q->rear;
}
free§;
}
代码思路:链队列是先入先出,所以删除的话应该是从头结点的下一个删除,因为头结点只是个标识,下一个才是链表第一个结点。所以新建一个结点对象,把第一个结点给新建的结点,值也给它,然后让头结点的下一个等于第一个结点的下一个,然后free就行。注意,如果把队列中只剩一个结点的情况也得判断下。

5.销毁一个队列:由于链队列建立在内存的动态区,因此当一个队列不再有用时应当把它及时销毁掉,以免过多占用内存空间。
代码实现:
destoryQueue(LinkQueue *q)
{
while(q->front)
{
if(q->rear==q->front->next)
{
free(q->front);
q->front = q->rear;
}
}
}
代码思路:当尾结点的指针等于头结点指针的下一个时,删除尾结点指针就行,就算是队列销毁了,有人会问头指针等于尾指针不行吗,当然,两个相等是队列为空,而不是销毁队列。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:19:45  更:2022-04-01 00:20:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:40:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码