From e86cb66ac9c563c86e76d4039d66613a1aac8bc3 Mon Sep 17 00:00:00 2001 From: mmdapl <2237221210@qq.com> Date: Sun, 14 Mar 2021 11:49:02 +0800 Subject: [PATCH] update queue --- README.md | 8 ++-- 数据结构/栈和队列/5.队列的顺序存储结构.md | 52 +++++++++++++++++++++++ 2 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 数据结构/栈和队列/5.队列的顺序存储结构.md diff --git a/README.md b/README.md index 4b5157c..46c2c1e 100644 --- a/README.md +++ b/README.md @@ -69,10 +69,12 @@ - [栈的基本概念和基本操作](/数据结构/栈和队列/1.基本概念和基本操作.md) - [栈的顺序存储结构](/数据结构/栈和队列/2.顺序存储结构.md) - [栈的链式存储结构](/数据结构/栈和队列/3.链式存储结构.md) -- 顺序存储 -- 链式存储 +- [队列的基本概念和基础操作](/数据结构/栈和队列/4.队列的基本概念和基础操作.md) +- [队列的顺序存储]() +- [队列的链式存储]() + - 双端队列 -- 站和队列的应用 +- 栈和队列的应用 - 括号匹配 - 表达式求值 - 递归 diff --git a/数据结构/栈和队列/5.队列的顺序存储结构.md b/数据结构/栈和队列/5.队列的顺序存储结构.md new file mode 100644 index 0000000..f231e8c --- /dev/null +++ b/数据结构/栈和队列/5.队列的顺序存储结构.md @@ -0,0 +1,52 @@ + + + +## 队列的顺序存储结构 + + +> 队列的顺序实现是指分配一块连续的存储单元用来存放队列中的元素,并且附加两个指针。 +> - `front指针`: 指向队头元素的位置 +> - `rear指针`: 指向队尾元素的位置 + +队列顺序存储类型: + +```C++ +// 队列最大存储元素个数 +#define MaxSize 50 + +// 结构体定义 +typedef struct { + // 存放队列元素 + ElemType data[MaxSize]; + // 队头指针和队尾指针 + int front,rear; +} SqQueue; +``` + + +假定: + +- 队头指针指向队头元素 +- 队尾指针指向队尾元素的下一个位置 + +则: + +- 初始状态:Q.front===Q.rear===0 +- 入队操作:队不满时,先赋值给队尾元素,再移动队尾指针+1 +- 出队操作: 队不空时,先取队头元素值,再移动队头指针+1 + + + + +很显然,也存在: + +- 队头指针指向队头元素的前一个位置 +- 队尾指针指向队尾元素 +