diff --git a/.DS_Store b/.DS_Store index def6822..be0452a 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/数据结构/栈和队列/.DS_Store b/数据结构/栈和队列/.DS_Store index e0ec3bd..7d26eda 100644 Binary files a/数据结构/栈和队列/.DS_Store and b/数据结构/栈和队列/.DS_Store differ diff --git a/数据结构/栈和队列/5.队列的顺序存储结构.md b/数据结构/栈和队列/5.队列的顺序存储结构.md index f231e8c..e6fdade 100644 --- a/数据结构/栈和队列/5.队列的顺序存储结构.md +++ b/数据结构/栈和队列/5.队列的顺序存储结构.md @@ -4,7 +4,7 @@ * @Author: 【B站&公众号】Rong姐姐好可爱 * @Date: 2020-03-1 07:23:48 * @LastEditors: 【B站&公众号】Rong姐姐好可爱 - * @LastEditTime: 2021-03-14 11:48:43 + * @LastEditTime: 2021-03-17 08:26:30 --> @@ -38,15 +38,36 @@ typedef struct { 则: -- 初始状态:Q.front===Q.rear===0 +- 初始状态:`Q.front`===`Q.rear`===0 - 入队操作:队不满时,先赋值给队尾元素,再移动队尾指针+1 - 出队操作: 队不空时,先取队头元素值,再移动队头指针+1 +![](/数据结构/栈和队列/images/入队.png) -很显然,也存在: +在空队列中,初始状态为`Q.front===Q.rear==0`,当元素a入队时,队尾指针rear后移+1,入队成功后,`Q.front==0`、`Q.rear==1`,在队不满的情况下进队,都是`先赋值给队尾元素,再移动队尾指针rear+1`,通过上面的图宝贝可以看到,队列被元素打满的时: + +- 在这个进队的过程中,没有元素出队,队头指针并没有做改变,`Q.front==0` +- 进队操作直接影响队尾指针的变化,队列满的时候`Q.rear==Maxsize` + +> Tips: MaxSize为队列结构体定义中,最大存储元素个数哦~ + + +![](/数据结构/栈和队列/images/出队.png) + +进队说完了,那给宝贝来说说出队吧。以上图为例,队列中`Q.rear==Maxsize`、`Q.front==0`;当出现元素在队首出队,就会直接影响队首指针,从上面的流程上看: + +- 元素出队,front指针后移+1,在队不空的情况下,操作为:`先取队头元素值,再移动队头指针+1` + + +很显然,也存在下面这种情况: - 队头指针指向队头元素的前一个位置 - 队尾指针指向队尾元素 + + + + +### 循环队列 \ No newline at end of file diff --git a/数据结构/栈和队列/images/入队.png b/数据结构/栈和队列/images/入队.png new file mode 100644 index 0000000..30e6ee8 Binary files /dev/null and b/数据结构/栈和队列/images/入队.png differ diff --git a/数据结构/栈和队列/images/出队.png b/数据结构/栈和队列/images/出队.png new file mode 100644 index 0000000..970a7d5 Binary files /dev/null and b/数据结构/栈和队列/images/出队.png differ