【笔记】数据结构、算法5
下述有关栈和队列的区别,说法错误的是? D
A、栈是限定只能在表的一端进行插入和删除操作。
B、队列是限定只能在表的一端进行插入和在另一端进行删除操作。
C、栈和队列都属于线性表
D、栈的插入操作时间复杂度都是o(1),队列的插入操作时间复杂度是o(n)
对于栈用栈顶指针表示栈顶,而栈的插入和删除操作均在栈顶进行。
对于队列用队头和队尾指针分别表示允许插入和删除的一端。因此对于顺序存储和链式存储的栈和队列,进行插入和删除运算的时间复杂度均为O(1)。
执行()操作时,需要使用队列作为辅助存储空间。
查找哈希(hash)表
广度优先搜索图
先序(根)遍历二叉树
深度优先搜索图
图的拓扑排序,深度优先 DFS关键路径算法用的栈辅助
树的层次遍历 图的广度BFS优先遍历用的队列辅助
数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为()。
如果不是循环队列,那么就是r-f。
此题是循环队列,那么:
第一种:如图示,rear>front,那么就是r-f
第二种:front>rear,那么元素个数为,(8+5-8)%8=3,即(n+r-f)%n.
在二叉排序树中插入一个关键字值的平均时间复杂度为()。 O(log n)
二叉排序树新插入的点均在叶子上,因此插入时间为O(1),而查找需从根节点往下找,因此算法复杂度可为树的高度,即O(log n) n为结点数目。
若 GetHead 【 GetTail 【 GetHead 【 ((a,b),(c,d)) 】】】 = A;, 则A为: b
GetHead 【 ((a,b),(c,d)) 】返回第一个元素(a,b)
GetTail (a,b) 返回除第一个元素外的子表(b)
GetHead (b)返回第一个元素 b
B+树、B-树、B树、B*树。
线性结构的是()
线性结构:线性结构也是逻辑结构、线性是指一个元素后继只有唯一的一个元素或节点、
顺序结构:顺序结构是存储结构、非线性是一个元素后面可以有多个后继或前继节点、
顺序是指存储结构连续,例如数组是顺序的,链表不是顺序的,但他们都是线性的。
常用的线性结构有:线性表,堆栈,队列,双队列,数组,串。
常见的非线性结构有:二维数组,数组,广义表,树(二叉树等),图。