博客
关于我
链队列——出入队列
阅读量:297 次
发布时间:2019-03-03

本文共 1077 字,大约阅读时间需要 3 分钟。

队列数据结构实现

队列是一种先进先出的数据结构,可以通过两端操作数据。在本次实现中,我们使用两个结构体分别存储队列的头和尾节点。

结构体定义如下:

```cstruct node { int data; node *next; };

struct Queue

{
node *head; // 表头指针
node *rear; // 尾部指针
};

Queue Q; // 队列对象

初始化队列时,默认将头节点和尾节点初始化为一个空节点:

```cQ.head = new node; Q.rear = new node; Q.head->next = NULL; Q.rear->next = NULL;

实现队列的增操作(get_link函数):

```cvoid get_link(int x, Queue *Q) { node *tail = Q.rear; // 获取当前尾部节点
while (x--)  {      node *q = new node;      scanf("%d", &q->data);      tail->next = q;      q->next = NULL;      tail = q;  }  Q.rear = tail;  // 更新尾部指针

实现队列的删操作(out_link函数):

```cvoid out_link(node *head) { node *q = head->next; while (q) { printf("%d\n", q->data); q = q->next; } head->next = q; // 将原头节点的下一个指针设为空节点

主函数实现:

```cint main() { int x; scanf("%d", &x);
node *head = new node;  Q.head = Q.rear = head;  // 初始化头和尾都指向同一个空节点  get_link(x, &Q);  // 读取并添加x个节点  out_link(Q.head);  // 输出队列中的数据  if (!Q.head->next)  {      printf("队列为空\n");  }  return 0;

}

整个实现通过动态分配节点实现了队列的基本操作,支持插入和删除数据。通过尾部指针的更新确保了队列的高效操作。

转载地址:http://oqsl.baihongyu.com/

你可能感兴趣的文章
opencv面向对象设计初探
查看>>
OpenCV(1)读写图像
查看>>
OpenCV:不规则形状区域中每种颜色的像素数?
查看>>
OpenCV:概念、历史、应用场景示例、核心模块、安装配置
查看>>
OpenDaylight融合OpenStack架构分析
查看>>
OpenERP ORM 对象方法列表
查看>>
openEuler Summit 2022 成功举行,开启全场景创新新时代
查看>>
openEuler 正式开放:推动计算多样化时代的到来
查看>>
OpenEuler23.03欧拉系统_安装瀚高数据库企业版6.0.4_openeuler切换root用户_su:拒绝权限_passwd: 鉴定令牌操作错误---国产瀚高数据库工作笔记001
查看>>
OpenEuler23.03欧拉系统_安装瀚高数据库企业版6.0.4_踩坑_安装以后系统无法联网_启动ens33网卡---国产瀚高数据库工作笔记002
查看>>
OpenFeign 入门与实战
查看>>
OpenFeign源码学习
查看>>
OpenFeign组件声明式服务调用
查看>>
openfeign远程调用不起作用解决_使用Spring Boot的spring.factories进行注入---SpringCloud Alibaba_若依微服务框架改造---工作笔记007
查看>>
openfire开发(四)消息拦截器
查看>>
openfire源码解读之将cache和session对象移入redis以提升性能
查看>>
Openfire身份认证绕过漏洞复现+利用(CVE-2023-32315)
查看>>
OpenForest 开源项目安装与使用指南
查看>>
opengl 深度详解,多重采样时,如何在OpenGL纹理中解析深度值?
查看>>
OpenGL 的内置矩阵种种
查看>>