线性结构-队列
Posted 「已注销」
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性结构-队列相关的知识,希望对你有一定的参考价值。
二 队列
一.什么是队列
队列:两端"开口", 尾进头出_先进先出( 以图片为准则 理解图片以及记忆原理方法而非概念 )
队头和队尾
队头: 队列中出队列的一端
队尾: 队列中进队列的一端
队列的实现方法
- 顺序表_顺序队列
- 链表_链式队列
队列的应用
排队问题…
二.顺序队列
#include<stdio.h>
// 入队
// 参数: 存储结构,队尾,数据
// 返回值: 队尾
int enQueue(int* a, int rear, int data)
// rear: 即将添加数据的位置
a[rear] = data;
printf("元素%d以入队\\n", a[rear]);
rear++;
return rear;
// 出队
// 参数: 存储结构,队尾,队头
// 返回值: 队头指针
int deQueue(int* a, int rear, int front)
// 判断
if (rear == front)
printf("删除失败,队列为空\\n");
else
printf("元素%d已出队\\n",a[front]);
front++;
return front;
int main()
// 数组(队列)
int a[100];
// 队头和队尾
int rear, front;
// 当队列中没有元素的时候.队头和队尾是同一个地方
rear = front = 0;
// 入队
for (size_t i = 0; i < 5; i++)
rear = enQueue(a, rear, i); // 队列中按顺序存入12345
// 出队
while (rear != front)
front = deQueue(a, rear, front);
front = deQueue(a, rear, front);
问题1: 头和尾不断递增, 而数组有限制
问题2: 如果不断存储,不出队列,数组需要扩容
个位可以想一想啊, 往后一起我写出我的解决方案, 但是想看看大佬们的操作
三.链式队列
#include<stdio.h>
#include<stdlib.h>
// 节点
typedef struct QNode
int data;
struct QNode* next;
QNode;
// 创建队列(头节点)
QNode* initQueue()
// 创建头节点
QNode* queue = (QNode*)malloc(sizeof(QNode));
// 赋值(头节点不存储数据,或初始化任意值)
queue->next = NULL;
return queue;
// 入队
QNode* enQueue(QNode* rear, int data)
// 1 做一个新的节点
QNode* NewNode = (QNode*)malloc(sizeof(QNode));
NewNode->data = data;
NewNode->next = NULL;
// 2 使用尾插法添加
rear->next = NewNode;
rear = NewNode;
return rear;
// 出队
QNode* deQueue(QNode* front, QNode* rear)
if (front->next == NULL)
printf("队列为空!\\n");
return rear;
// 创建临时指针
QNode* pList = front->next;
// 显示数据
printf("%d ",pList->data);
// 断头, 换头
front->next = pList->next;
// 判断
if (rear == pList)
rear = front;
// 释放
free(pList);
return rear;
int main()
QNode* queue, * front, * rear;
queue = front = rear = initQueue();
// 入队
for (size_t i = 1; i <= 5; i++)
rear = enQueue(rear, i);
// 出队
rear = deQueue(front, rear);
rear = deQueue(front, rear);
rear = deQueue(front, rear);
rear = deQueue(front, rear);
rear = deQueue(front, rear);
rear = deQueue(front, rear);
return 0;
以上是关于线性结构-队列的主要内容,如果未能解决你的问题,请参考以下文章