青大数据结构【2020】【二简答】

1.循环队列是如何提出的?如何判别它的空和满

为了解决顺序队列的假溢出问题,提出了循环队列,即把存储队列的表从逻辑上看成一个环。

判别队列空和满有三种方法:

1)采用计数器判断,空时,计数器为0,满时,计数器为maxsize;

2)另设一个布尔变量以匹配队列的空和满;

3)少用一个元素的空间,约定入队前,测试尾指针rear在循环意义下加1后是否等于头指针front,若相等则认为队满。

空:Q.front==Q.rear

满:(Q.rear+1)%maxsize==Q.front

队列元素个数:(Q.rear-Q.front+maxsize)%maxsize


3.简要说明深度优先遍历(DFS)和广度优先遍历(BFS)的不同之处。

DFS深度优先遍历(递归,栈)

    类似树的先序遍历

    首先访问图中某一起始顶点v,接着由v出发,访问与v邻接且未被访问的任一顶点w1,再访问与w1邻接且未被访问的顶点w2...

    重复上述过程,当不能再继续向下访问时,依次退回到最近被访问的顶点

    若它还有邻接顶点未被访问过,则从该点开始继续上述搜索过程,直到图中所有顶点被访问过为止

BFS广度优先遍历(非递归,队列)

    类似二叉树的层次遍历

    首先访问起始顶点v,接着由v出发,依次访问v的各个未访问过的邻接顶点w1,w2...wi

    然后再依次访问w1,w2...wi的所有未被访问过的邻接顶点,再从这些访问过的顶点出发,再访问它们所有未被访问过的邻接顶点...

    依次类推,直到图中所有顶点都被访问过为止


4.简述堆和二叉排序树的区别

1)结构上:

二叉排序树的所有左子树的结点都小于根结点,根结点又小于所有右子树的结点。

而堆(小根堆):根结点小于左右子树,但是左右子树没有大小之分。

2)作用上:

二叉排序树是用来做查找的,而堆是用来做排序的。

你可能感兴趣的:(青大真题,数据结构,算法,深度优先)