已知有一维数组A[0,.m×n一1],若要对应为m行、n列的矩阵,将元素A[k](0≤k<m×n)表示成矩阵的第i行、第j列的元素(0≤i
写一个HeapInsert(R,key)算法,将关键字插入到堆R中,并保证插入后R仍是堆。请分析算法的时间复杂度。提示:将key先插入R中已有元素的尾部(即原堆的长度加1的位置,插入后堆的长度加1),然后自下往上调整,使插入的关键字满足堆性质。
采用简单选择排序,比较次数与移动次数分别为( )。
无向图G有23条边,度为4的顶点有5个,度为3的顶点有4个,其余都是度为2的顶点,则图G最多有( )个顶点。
假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。 (1)下面所示的序列中哪些是合法的? A.IOIIOIOO B.IOOIOIIO C.IIIOIOIO D.IIIOOIOO (2)通过对(1)的分析,写出一个算法,判定所给的操作序列是否合法。若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。
如果T1是由有序树T转换而来的二叉树,那么T中结点的前序遍历序列就是T1中结点的( )遍历序列。
已知一个带有头结点的单链表L,其结点结构由两部分组成:数据域data,指针域link。设计一个算法,以最高效的方法实现在单链表中删除数据域最小值结点。要求:(1)给出算法的基本设计思想。(2)根据设计思想,采用C或C++或Java语言描述算法,关键之处给出注释。
用下列元素序列(22,8,62,35,48)构造平衡二又树,当插入( )时,会出现不平衡的现象。
如果具有n个顶点的图是一个环,则它有( )棵生成树。
假设以I和O分别表示入栈和出栈操作,则对初态和终态均为空的栈操作可由I和O组成的序列表示。 (1)试指出判别给定序列是否合法的一般规则。 (2)两个不同合法序列(对同一输入序列)能否得到相同的输出元素序列?如能得到,请举例说明。
下列( )是一个堆。
一棵含有n个结点的k叉树,可能达到的最大深度为( ),最小深度为( )。
如果只想得到1 000个元素组成的序列中第5个最小元素之前的部分排序的序列,用( )方法最快。
在用除余法作为散列函数线性探测解决冲突的散列表中,写一删除关键字的算法,要求将所有可以前移的元素前移去填充被删除的空位,以保证探测序列不至于断裂。
顺序查找法适用于查找顺序存储或链式存储的线性表,平均比较次数为( )在此假定N为线性表中结点数,且每次查拔都是成功的。
设有一个双链表L,每个结点中除有prior、data和next这3个域外,还有一个访问频度域freq,在链表被启用之前,其值均初始化为零。每当在链表进行一次LocateNode(L,x)运算时,令元素值为x的结点中freq域的值加1,并调整表中结点的次序,使其按访问频度的递减排列,以便使频繁访问的结点总是靠近表头。试写一符合上述要求的LocateNode运算的算法。
有()棵不同的二叉树,其结点的前序序列为a1,a2,…,an。
对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( )。
证明:具有n个顶点和多于n一1条边的无向连通图G一定不是树。
关于图(Graph)的一些问题: (1)有n个顶点的有向强连通图最多有多少条边?最少有多少条边? (2)表示有1000个顶点、1000条边的有向图的邻接矩阵有多少个矩阵元素?是否为稀疏矩阵?
