用C语言或PASCAL编写一用链接表(Linked List)解决冲突的哈希表插入函数。
若循环队列以数组Q[0..m-1]作为其存储结构,变量rear。表示循环队列中的队尾元素的实际位置,其移动按rear=(rear+1)MOD m进行,变量length表示当前循环队列中的元素个数,则循环队列的队首元素的实际位置是( )。
关于堆的一些问题: (1)堆的存储表示是顺序的,还是链接的? (2)设有一个最小堆,即堆中任意结点的关键字均大于它的左孩子和右孩子的关键字。其具有最大值的元素可能在什么地方? (3)对n个元素进行初始建堆的过程中,最多做多少次数据比较(不用大0表示法)?
假设有n个顶点e条边的有向图用邻接表表示,则删除与某个顶点v相关的所有边的时间复杂度为( )。
已知一个二叉树,用二叉链表形式存储,给出此二叉树建立过程算法(可不描述结构体)。
把树的根结点的层数定义为1,其他结点的层数等于其父结点所在层数加上1。设T是一棵二叉树,K
i
和K
j
是T中子结点数小于2的结点中的任意两个,它们所在的层数分别为λK
i
和λK
j
,当关系式|λK
i
一λK
j
|≤1一定成立时,则称T为一棵( )。
有n个顶点e条边的无向图,采用邻接表存储时,有( )个表头结点,有( )个链表结点。
设结点结构为(data,link),试用一个全局指针p和某种链接结构实现一个队列,画出示意图,并给出入队addq和出队deleq过程,要求它们的时间复杂性都是O(1)(不计new和dispose时间)。
G=(V,E)是一个带有权的连通图,如图所示。
对一个具有7个记录的文件进行快速排序,请问: (1)在最好情况下需进行多少次比较?说明理由,并给出相应实例。 (2)在最坏情况下需进行多少次比较?为什么?请给出相应实例。
对于由n个顶点组成的有向完全图来说,图中共包含( )条边,对于由n个顶点组成的无向完全图来说,图中共包含( )条边。
队尾已到达一维数组的最高下标,不能再插入元素,然而队中元素个数小于队列的长度,这种现象称作( )。
判别给定的二叉树是否是完全二叉树,并给出设计的算法(可不描述结构体)。
已知两个长度分别为l和s的降序链表,若将它们合并为一个长度为l+s的升序链表,则最坏情况下的时间复杂度是( )。
下面的算法实现的是带附加头结点的单链表数据结点逆序连接,空缺处应当填入( )。 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=( ); } }
一个二部图的邻接矩阵A是一个( )类型的矩阵。
键树(Trie),又称数字查找树,它是一棵度大于等于2的树,树中的每个结点中不是包含一个或几个关键字,而是只含有组成关键字的符号。请用类C语言或类PASCAL语言编写一个在键树T上查找关键字等于给定值KEy的记录的算法。若查找成功,返回指向该记录的指针;否则返回空指针。
已知一棵二叉树高度为h,在此二叉树中只有度为0和度为2的结点,那么这棵二叉树的结点个数最少为( )。
静态链表中指针表示的是( )。
设结点结构为(data,link),试用一个全局指针p和某种链接结构实现一个队列,画出示意图,并给出入队addq和出队deleq过程,要求它们的时间复杂性都是O(1)(不计new和dispose时间)。
