我真的不喜欢写代码 队列的特点 先进先出,即只能从队尾插入元素,从队头删除元素 队列的链式存储结构 队列的顺序存储结构 循环队列 为什么要实现循环队列 ( 图片来自严蔚敏的数据结构 ): 上图是队列的普通顺序存储,队列存入数据后,每删除一个元素,front指针都会上移,则front上一个指向的空间就 ...
分类:
编程语言 时间:
2019-10-14 14:45:25
阅读次数:
111
一、队列 1.队列类型 FIFO:先进先出 LIFO:后进先出(等同于栈) 优先级队列 双端队列:LIFO和FIFO结合,可以从队首和队尾添加和删除元素 循环队列:队首和队尾相连(可用来解决假溢出) 2.Python自带Queue模块【线程不安全,需加锁】 支持三种队列类型: FIFO(queue. ...
分类:
编程语言 时间:
2019-10-11 12:42:29
阅读次数:
92
一,队列的定义 ?和栈相反,队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端进行删除元素。 ?在队列中,允许插入的一端叫队尾。允许删除的一端叫队头。 ?队列中的元素按a0,a1.....an这个顺序入队,退队时也必须按这个顺序出队。即a0出队后,a1才可以出队。 二,顺序队列的表示 ...
分类:
其他好文 时间:
2019-10-08 14:07:08
阅读次数:
94
循环队列 当用顺序结构实现队列时如图所示:可以用一个数组代表队列空间,队列为空时 rear和front都是指向数组第一个元素。 从队尾插入的时候可以先将队尾指向的数组赋值,再将队尾指针+1 从对头弹出元素则是先给取出元素值再将队头指针+1 但如果这么做,就会遇到一个棘手的问题,那就是队头弹出和队尾插 ...
分类:
其他好文 时间:
2019-10-06 13:25:12
阅读次数:
89
数组的题还是普遍比较简单的,这道题我取巧了,取巧的方法看看就行,没多大意义,用了点循环队列的思想() 其实比赛的时候,无论怎么过的都无所谓,能过就行。我直接在读入数据的时候做了手脚……。让 i 从 step 开始 到 numsize+step 结束。然后中间索引改成 i % numsize 。这样在 ...
分类:
编程语言 时间:
2019-10-05 20:43:50
阅读次数:
93
一.线性表的逆置算法( a[ 1] ..... a[ n ]) 逆置为( a[ n ] ...... a[ 1 ]) (1)一维数组作存储结构 (2)单链表作为存储结构 二.二叉树:知道前序遍历、中序遍历、后序遍历任意两种即可求出该棵二叉树的形态。 三.求二叉树高度的算法: 四.判断循环队列是否满的 ...
分类:
其他好文 时间:
2019-10-04 22:52:46
阅读次数:
170
队列: 1.先进先出,后进后出; 2.支持入队Enqueue(将数据放到队尾)和出队Dequeue(取出队头数据)操作; 3.和栈一样属于操作受限的线性表; 如何实现队列? 1.数组实现(顺序队列) 2.链表实现(链式队列) 3.循环队列 队列的常见应用: 1.阻塞队列1)在队列的基础上增加阻塞操作 ...
分类:
其他好文 时间:
2019-10-03 18:10:11
阅读次数:
83
栈及其基本运算 栈(Stack)是一种特殊的线性表(一种数据结构,前后件从属关系描述线性表,线性表中所有元素所占的存储空间是连续的,在存储空间上是按逻辑顺序依次存放的。),它所有的插入与删除都限定在表的同一端进行,允许插入与删除的一端称为栈顶,不允许的一端称为栈底。当栈中没有元素时,称为空栈。 栈的 ...
分类:
其他好文 时间:
2019-09-20 23:26:43
阅读次数:
115
/* sequenceQueue.c */ /* 顺序队列 */ #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define MAXSIZE 100 /* 顺序循环队列数据结构 */ /* 一个圆圈,front指向队列头,r... ...
分类:
其他好文 时间:
2019-09-09 19:01:44
阅读次数:
180
一.顺序队列的改进 队列元素的出列是在队头,即下标为0的位置,那也就意味着,队列中的所有元素都得向前移动,以保证队列的队头(也就是下标为0的位置)不为空,此时的时间复杂度为0(n)。 可有时想想,为什么出队列时一定要全部移动呢,如果不去限制队列的元素必须存储在数组的前n个单元这一条件,出队的性能就会 ...
分类:
其他好文 时间:
2019-08-31 01:08:00
阅读次数:
65