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

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

队列数据结构实现

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

结构体定义如下:

```c struct node { int data; node *next; };

struct Queue

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

Queue Q; // 队列对象

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

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

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

```c void 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函数):

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

主函数实现:

```c int 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/

你可能感兴趣的文章
mysql自增id超大问题查询
查看>>
MySQL锁与脏读、不可重复读、幻读详解
查看>>
MySQL集群解决方案(4):负载均衡
查看>>
mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
查看>>
MySQL高级-MySQL并发参数调整
查看>>
MySQL高级-视图
查看>>
MySQL:判断逗号分隔的字符串中是否包含某个字符串
查看>>
Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
查看>>
Nacos安装教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
Nacos配置中心集群原理及源码分析
查看>>
nacos配置自动刷新源码解析
查看>>
Nacos集群搭建
查看>>
nacos集群搭建
查看>>
Navicat for MySQL 查看BLOB字段内容
查看>>
Neo4j电影关系图Cypher
查看>>
Neo4j的安装与使用
查看>>
Neo4j(2):环境搭建
查看>>
Neo私链
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>