已知3个带头结点的线性链表A、B、C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对链表A进行如下操作:使操作后的链表A中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为O(m+n+p),其中m、n和p分别为3个表的长度。
基于比较方法的n个数据的内部排序,最坏情况下的时间复杂度能达到的最好下界是( )。
有n个叶子结点的哈夫曼树的结点总数为( )。
下列内部排序算法中,其比较次数(或交换次数)与序列初态无关的算法是( )。
对于一个使用邻接表存储的有向图G,可以利用深度优先遍历方法,对该图中结点进行拓扑排序。其基本思想是:在遍历过程中,每访问一个顶点,就将其邻接到的顶点的入度减1,并对其未访问的、入度为0的邻接到的顶点进行递归。
若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为( )。
假设一棵平衡二叉树的每个结点都标明了平衡因子b,试设计一个算法,求平衡二叉树的高度。
已有邻接表表示的有向图,请编程判断从第u顶点至第v顶点是否有简单路径,若有则打印出该路径上的顶点。
试写一算法,判断以邻接表方式存储的有向图中是否存在由顶点V
i
到顶点V
j
的路径(i≠j)。(注意:算法中涉及的图的基本操作必须在存储结构上实现。)
以下数据结构中,( )是线性数据结构。
已知当前栈中有n个元素,此时如果有新的元素需要执行进栈操作,但发生上溢,则由此可以判断,此栈的最大容量为( )。
下列二叉排序树中,满足平衡二叉树定义的是()。
下面的算法实现的是带附加头结点的单链表数据结点逆序连接,空缺处应当填入( )。 void reverse(pointer h){ //h为附加头结点指针 pointer p,q; P=h一>next:h一>next=NULL; while(P!=null){ q=P: P=P一>next: q->next=h一>next; h->next=(_____); } }
下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是( )。
二叉树若用顺序方法存储,则下列四种算法中运算时间复杂度最小的是( )。
对于有向无环图,叙述求拓扑有序序列的步骤。
若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( )。
在归并排序中,若待排序记录的个数为20,则共需要进行( )趟归并,在第三趟归并中,是把长度为( )的有序表归并为长度为( )的有序表。
画出如下图所示的二叉树所对应的森林。
如果线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。
