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

03-3.2.3 队列的链式存储的实现

  • 👋 Hi, I’m @Beast Cheng
  • 👀 I’m interested in photography, hiking, landscape…
  • 🌱 I’m currently learning python, javascript, kotlin…
  • 📫 How to reach me --> 458290771@qq.com

喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
此外,《程序员必备技能》专栏和《程序员必备工具》专栏(该专栏暂未开设)日后会逐步更新,感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏

代码实现

typedef struct LinkNode{    //链式队列结点ElemType data;struct LinkNode *next;
}LinkNode;typedef struct{             //链式队列LinkNode *front, *rear; //队列的队头和队尾指针
}LinkQueue;

基本操作

初始化

带头结点

void InitQueue(LinkQueue &Q){//初识时,front和rear都指向头结点Q.front = Q.rear = (LinkNode*) malloc (sizeof(LinkNode));Q.front->next = NULL;
}void testQueue(){LinkQueue Q;   //声明一个队列InitQueue(Q);  //初始化队列
}
带头结点的队列判空
bool IsEmpty(LinkQueue Q){if(Q.front == Q.rear)return true;elsereturn false;
}

不带头结点

void InitQueue(LinkQueue &Q){//初始时,front和rear都指向NULLQ.front = NULL;Q.rear = NULL;
}
不带头结点的队列判空
bool IsEmpty(LinkQueue Q){if(Q.front == NULL)return true;elsereturn false;
}

入队

带头结点

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;         //修改表尾指针
}

出队

带头结点

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;
}
http://www.lryc.cn/news/366383.html

相关文章:

  • Spring AI 第二讲 之 Chat Model API 第八节Anthropic 3 Chat
  • 【ARM 常见汇编指令学习 6.2 -- ARMv8 汇编指令 SDIV 详细介绍】
  • 【ArcGIS微课1000例】0113:大地测量要素概述与构建
  • 【记录】LangChain+本地模型的文档问答(webUI)
  • Winddow系统下关于Golang使用Cgo的配置
  • python面向过程与初始面向对象编程
  • vue3 实现自定义指令封装 --- 通俗易懂
  • 5.31.15 使用图像到图像转换和 YOLO 技术对先前的乳房 X 光检查结果中的异常进行早期检测和分类
  • 题解web
  • 在keil5中打开keil4工程的方法
  • 【代码随想录算法训练营第37期 第二十四天 | LeetCode77. 组合】
  • 探索Linux中的`tree`命令:目录结构的可视化利器
  • ES 面试手册
  • Mybatis缓存的生命周期、使用的特殊情况
  • day 37 738.单调递增的数字
  • 【加密与解密】【01】网络安全体系
  • nvm,node不是内部命令,npm版本不支持问题(曾经安装过nodejs)
  • 从入门到精通:基础IO
  • 网络空间安全数学基础·多项式环与有限域
  • 路由器重启真的好吗?多久重启一次更好?
  • 删除目录
  • HCIP-Datacom-ARST自选题库__BGP/MPLS IP VPN判断【10道题】
  • 【Go语言精进之路】构建高效Go程序:掌握变量、常量声明法则与iota在枚举中的奥秘
  • python记录之bool
  • 加密经济浪潮:探索Web3对金融体系的颠覆
  • list的简单模拟实现
  • 深入解析Java HashMap的putVal方法
  • 使用智谱 GLM-4-9B 和 SiliconCloud 云服务快速构建一个编码类智能体应用
  • 关于vue2 antd 碰到的问题总结下
  • 常见的api:Runtime Object