数据结构--队列的链表实现

这篇具有很好参考价值的文章主要介绍了数据结构--队列的链表实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据结构–队列的链表实现

数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列

队列的链表实现代码定义

数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列
typedef struct LinkNode
{
    ElemType data;
    struct LinkNode* next;
}LinkNode;

typedef struct
{
    LinkNode *front, *rear;
}LinkQueue;

带头结点

初始化

数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列
void InitQueue(LinkQueue &Q)
{
    Q.front = Q.rear = (LinkNode*)malloc(sizeof(LinkNode));
    Q.front->next = NULL;
}

判断队列是否为空

bool IsEmpty(LinkQueue Q)
{
    return Q.front == Q.rear;
}

入队

数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列
void EnQueue(LinkQueue &Q, ElemType x)
{
    LinkNode *s = (LinkNode*)malloc(sizeof(LinkNode));
    s->data = x;
    s->next = NULL;
    Q.rear->next = s; //新结点插入到rear之后
    Q.rear = s; //修改表尾指针
}

出队

数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列
bool DeQueue(LinkQueue &Q, ElemType &x)
{
    if (Q.front == Q.rear)  return false;

    LinkNode* p = Q.front->next; 
    x = p->data; //用变量x返回队头元素
    Q.front->next = p->next; //修改头结点的next指针
    if (Q.rear == p) //此次是最后一个结点出队
        Q.rear = Q.front; //修改rear指针
    free(p);
    return true;
}

不带头结点

初始化

void InitQueue(LinkQueue &Q)
{
    Q.front = Q.rear = NULL;
}

判断队列是否为空

bool IsEmpty(LinkQueue Q)
{
    return Q.front == NULL;
} 	

入队

数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列
void EnQueue(LinkQueue &Q, ElemType x) 
{
    LinkNode *s = (LinkNode*)malloc(sizeof(LinkNode));
    s->data = x;
    s->next = NULL;
    //不带头结点的队列,第一个元素入队时需要特别处理
    if (Q.front == NULL)
        Q.front = s, Q.rear = s;
    else 
        Q.rear->next = s, Q.rear = s;
}

出队

数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列
bool DeQueue(LinkQueue &Q, ElemType &x)
{
    if (Q.front == NULL)  return false;

    LinkNode* p = Q.front; 
    x = p->data; //用变量x返回队头元素
    Q.front = p->next; //修改front指针
    if (Q.rear == p) //此次是最后一个结点出队
        Q.front = Q.rear = NULL; //front & rear 指向NULL
    free(p);
    return true;
}

队满

链式存储――一般不会队满,除非内存不足文章来源地址https://www.toymoban.com/news/detail-516137.html

知识点回顾与重要考点

数据结构--队列的链表实现,408数据结构,数据结构,链表,算法,c++,c语言,队列

到了这里,关于数据结构--队列的链表实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++数据结构与算法详解:链表、栈、队列、树、二叉树和图结构的实现与应用

    链表是一种常见的数据结构由一系列节点按顺序连接而成,一般每个节点包含一个数据元素和一个指向下一个节点的引用。 链表有多种类型: 单向链表:每个节点只有一个指向下一个节点的引用 双向链表:每个节点有一个指向前一个节点和一个指向后一个节点的引用 循环链

    2024年02月04日
    浏览(52)
  • 【数据结构初阶】三、 线性表里的链表(无头+单向+非循环链表 -- C语言实现)

    ========================================================================= 相关代码gitee自取 : C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 【数据结构初阶】二、 线性表里的顺序表(C语言实现顺序表)-CSDN博客  =========================

    2024年02月08日
    浏览(57)
  • Python数据结构与算法-数据结构(列表、栈、队列、链表)

    数据结构是指相互之间存在这一种或者多种关系的数据元素的集合和该集合中元素之间的关系组成。 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中。 比如:列表、集合与字典等都是一种数据结构。 N.Wirth:“程序=数据结构+算法” 数据结构按照其 逻辑结

    2024年02月08日
    浏览(58)
  • 【数据结构与算法——TypeScript】数组、栈、队列、链表

    解决问题 的过程中,不仅仅 数据的存储方式会影响效率,算法的优劣也会影响效率 什么是算法? 定义: 🟢 一个有限指令集,每条指令的描述不依赖于言语 (编写指令:java/c++/ts/js) 🟢 接收一些输入(有些情况下不需要输入)(接收:排序:无序数组) 🟢 产生输出 (

    2024年02月14日
    浏览(38)
  • 《数据结构与算法》之队列与链表复习

    我们在上一次学习了堆栈的数据结构以后,可以了解到它是受限制的操作,比如我们操作只能在栈顶,现在我们要学习的东西叫做队列,它也是受限制的一种数据结构,它的特点是队头只出数据,而队尾只入数据, 它的结构就和它的名字,像我们平时排队一样先来的人肯定要

    2024年02月08日
    浏览(67)
  • 【c++学习】数据结构中的链表

    链表与线性表相对,链表数据在内存中的存储空间是不连续的,链表每个节点包含数据域和指针域。 下述代码实现了链表及其接口 包括增、删、查、改以及其他一些简单的功能 运行结果: 于 2024-01-23 第一次整理编写 学习时整理,不当之处烦请指正 码字不易,留个赞再走吧

    2024年01月24日
    浏览(55)
  • 【数据结构】两两交换链表 && 复制带随机指针的链表

    给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 使用一个栈S来存储相邻两个节点即可 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以

    2024年04月15日
    浏览(49)
  • 【“栈、队列”的应用】408数据结构代码

    王道数据结构强化课——【“栈、队列”的应用】代码,持续更新

    2024年02月07日
    浏览(43)
  • 【数据结构】链表C语言编写的,它定义了一个链表,并实现了一些基本的链表操作,如创建新节点、插入节点、清空链表、输出链表以及查找节点

    这段代码是用C语言编写的,它定义了一个链表,并实现了一些基本的链表操作,如创建新节点、插入节点、清空链表、输出链表以及查找节点。以下是每段代码的详细解释: 文件注释: 这段代码是一个文件注释 包含头文件: #include stdio.h  和  #include stdlib.h :这两个头文件

    2024年02月09日
    浏览(46)
  • 利用C++超详细解释数据结构中的链表

    链表(Linked List)是一种常见的数据结构,它可以动态地插入和删除元素,不需要像数组那样预先分配固定大小的内存。链表中的每个元素称为节点(Node),每个节点包含一个数据值和一个指向下一个节点的指针。本教学将涵盖以下知识点: 单向链表(Singly Linked List) 双向

    2024年02月04日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包