文章目录
1.队列的概念
1.1 栈也是一种特殊的线性表。
1.2 栈和队列的区别:
(1)几端
在栈中,出数据和入数据都是在固定的一端(栈顶)。而在队列中(两端),出数据在一端,入数据在另一端 。
(2)先后
栈:先进后出
队列:先进先出 (意思是先进来的元素,从它开始出去)
1.3 入和出
入队列:插入数据----->这一端称为队尾
出队列:删除数据----->这一端称为队头
两端都需要操作,所以两头都是空的。
1.4 底层
栈的底层是数组,队列的底层是什么呢?(单链表)
2. 队列的操作
2.1 队列的定义
之前学习的其余类型,只需要一个结构体就可以定义好。但是队列需要两个结构体嵌套使用才可以。
定义队列需要一个结构体(里面是头phead和尾ptail),队列里面的数据是一个一个的结点类型(所以需要有结点类型的结构:里面保存了数据+下一个结点地址)。
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef int Datatype;
//定义队列结点的结构
typedef struct QueueNode
{
Datatype data;
struct QueueNode* next;
}QueueNode;
//定义队列的结构
typedef struct Queue
{
struct QueueNode* phead; //对头删(出)
<