当前位置: 首页 > news >正文

数据结构---链式队列

基于链式存储结构实现的队列

实现方式:带头结点的单链表

操作:

(1)初始化

#include<stdio.h>
#include<stdlib.h>
//链式队列
//链表的结点结构
typedef struct Node
{int data;struct Node* next;
}QNode;
//声明队列结构(用结构体声明队列结构的好处是可以声明多个队列)
typedef struct queue
{QNode* head;QNode* tail;
}Queue;
//初始化
Queue* InitQueue()
{Queue *q = (Queue*)malloc(sizeof(Queue));if(q == NULL){printf("内存申请失败\n");return NULL;}QNode *p = (QNode*)malloc(sizeof(QNode));if(p == NULL){printf("内存申请失败\n");return NULL;}p->next = NULL;q->head = p;q->tail = p;return q;
}

(2)入队(使用带尾指针的尾插法)

//入队(尾插法)
Queue* push(Queue *q,int k)
{QNode* p = (QNode*)malloc(sizeof(QNode));if(p == NULL){printf("内存申请失败\n");return q;}p->data = k;p->next = q->tail->next;q->tail->next = p;q->tail = p;return q;
}

(3)出队

//出队
Queue* pop(Queue* q)
{if(q->head->next == NULL){printf("空队列\n");return q;}QNode* temp = q->head->next;q->head->next = q->head->next->next;if(temp == q->tail)//防止尾指针称为野指针{q->tail = q->head;}free(temp);temp = NULL;return q;
}

(4)判空

//判空
int isEmpty(Queue* q)
{if(q->head == q->tail){return 1;   }return 0;
}

链式队列没有判满操作,是无限的

相比较于顺序队列,后面没有循环链式队列,

因为链式队列不存在假溢出的情况

除了链式队列和顺序队列还有优先队列和双端队列


文章转载自:

http://sL616U99.msbct.cn
http://HmirUF80.msbct.cn
http://hmFhX9Ls.msbct.cn
http://lyiXQT3n.msbct.cn
http://oxW9oj9H.msbct.cn
http://iCUp1EpC.msbct.cn
http://ruFDbPAD.msbct.cn
http://noePqsDz.msbct.cn
http://GIjhIImS.msbct.cn
http://fZGFIREf.msbct.cn
http://ngt2OqgA.msbct.cn
http://1BNXWr8T.msbct.cn
http://f2hVGo85.msbct.cn
http://9eo7QmYU.msbct.cn
http://ogoAiPPi.msbct.cn
http://itSNsH8t.msbct.cn
http://T7RS1558.msbct.cn
http://tZ8lz1y1.msbct.cn
http://svGp3ZAc.msbct.cn
http://63JSJJyV.msbct.cn
http://9uArcjij.msbct.cn
http://J8FMwY3y.msbct.cn
http://ex0FGNgk.msbct.cn
http://ehmG6Kbk.msbct.cn
http://MrtQ7L0s.msbct.cn
http://Ai2HlOKS.msbct.cn
http://In9kgGaJ.msbct.cn
http://qsPy3j14.msbct.cn
http://oCPuKFWq.msbct.cn
http://1VBdMbML.msbct.cn
http://www.dtcms.com/a/381830.html

相关文章:

  • 【C++实战⑦】C++函数实战:从基础到项目应用
  • 通过语义AI管道检测文本数据中的潜在异常值
  • 这是第二篇
  • Mamba模型介绍
  • rock linux 9 安装mysql 5.7.44
  • 基于STM32智能农业大棚检测控制系统设计
  • 05 回归问题和分类问题
  • Linux应用(4)——进程通信
  • 用C语言解决喝汽水问题
  • 【开题答辩全过程】以 4S店汽车维修保养管理系统为例,包含答辩的问题和答案
  • 边缘计算技术深入解析
  • 三生原理的“素性塔“结构是否暗含共形场论中的算子乘积展开层级?‌
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘cugraph’问题
  • 评估硬件兼容性时如何快速判断老旧设备是否支持新协议
  • [2025]使用echarts制作一个漂亮的天气预报曲线图
  • 每日算法题推送
  • DataSet-深度学习中的常见类
  • Python编辑器的安装及配置(Pycharm、Jupyter的安装)从0带你配置,小土堆视频
  • SystemVerilog 学习之SystemVerilog简介
  • 中国联通卫星移动通信业务分析
  • 学习游戏制作记录(实现震动效果,文本提示和构建游戏)9.13
  • 【CMake】循环——foreach(),while()
  • 对比Java学习Go——函数、集合和OOP
  • AI时代的内容创作革命:深度解析xiaohongshu-mcp项目的技术创新与实战价值
  • 3-11〔OSCP ◈ 研记〕❘ WEB应用攻击▸存储型XSS攻击
  • 贪心算法应用:配送路径优化问题详解
  • 神经网络稀疏化设计构架中的网络剪枝技术:原理、实践与前沿探索
  • p5.js 绘制 3D 椭球体 ellipsoid
  • Qt中自定义控件的三种实现方式
  • leetcode34(环形链表)