博客
关于我
链队列——出入队列
阅读量: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/

你可能感兴趣的文章
NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
查看>>
null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
查看>>
Number Sequence(kmp算法)
查看>>
Numix Core 开源项目教程
查看>>
numpy
查看>>
Numpy 入门
查看>>
NumPy 库详细介绍-ChatGPT4o作答
查看>>
NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
查看>>
numpy 或 scipy 有哪些可能的计算可以返回 NaN?
查看>>
numpy 数组 dtype 在 Windows 10 64 位机器中默认为 int32
查看>>
numpy 数组与矩阵的乘法理解
查看>>
NumPy 数组拼接方法-ChatGPT4o作答
查看>>
numpy 用法
查看>>
Numpy 科学计算库详解
查看>>
Numpy.fft.fft和numpy.fft.fftfreq有什么不同
查看>>
numpy.linalg.norm(求范数)
查看>>
Numpy.ndarray对象不可调用
查看>>
Numpy.VisibleDeproationWarning:从不整齐的嵌套序列创建ndarray
查看>>
Numpy:按多个条件过滤行?
查看>>
Numpy:条件总和
查看>>