else;
}
elsereturn-1;
}
六、编写算法(14分)
编写在以BST为树根指针的二叉搜索树上进行查找值为item的结点的非递归算法,若查找成功则由item带回整个结点的值并返回true,否则返回false。
boolFind(BTreeNode*BST,ElemType&item)
数据结构作业题(四)
一、选择题(每题2分,共20分)
1.从逻辑上可以把数据结构分为()两大类。
A.动态结构、静态结构B.顺序结构、链式结构
C.线性结构、非线性结构D.初等结构、构造型结构
2.以下数据结构中,哪一个是线性结构()?
A.广义表B.二叉树C.稀疏矩阵D.串
3.连续存储设计时,存储单元的地址()。
A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续
4.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()。
A.O(0)B.O
(1)C.O(n)D.O(n2)
5.在双向链表指针p的结点前插入一个指针q的结点操作是()。
A.p->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q;
B.p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink;
C.q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q;
D.q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q;
6.若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。
A.i-j-1B.i-jC.j-i+1D.不确定的
7.有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?
()
A.543612B.453126C.346521D.234156
8.用链接方式存储的队列,在进行删除运算时()。
A.仅修改头指针B.仅修改尾指针
C.头、尾指针都要修改D.头、尾指针可能都要修改
9.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?
()
A.1和5B.2和4C.4和2D.5和1
10.栈和队列的共同点是()。
A.都是先进先出B.都是先进后出
C.只允许在端点处插入和删除元素D.没有共同点
二、填空题(每空2分,共30分)
1.数据结构中评价算法的两个重要指标是和。
2.一个算法具有5个特性:
、、,有零个或多个输入、有一个或多个输出。
3.在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动________个元素。
4.对于双向链表,在两个结点之间插入一个新结点需修改的指针共______个,单链表为_______个。
5.设数组a[1..50,1..80]的基地址为2000,每个元素占2个存储单元,若以行序为主序顺序存储,则元素a[45,68]的存储地址为__;若以列序为主序顺序存储,则元素a[45,68]的存储地址为__。
6.所谓稀疏矩阵指的是_______。
7.广义表的_______定义为广义表中括弧的重数。
8.具有256个结点的完全二叉树的深度为______。
9.已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树有______个叶子结点。
10.高度为8的完全二叉树至少有______个叶子结点。
三、计算题(每题6分,共30分)
1.如果输入序列为123456,试问能否通过栈结构得到以下两个序列:
435612和135426;请说明为什么不能或如何才能得到。
2.假定一棵二叉树广义表表示为a(b(c),d(e,f)),分别写出对它进行先序、中序、后序、按层遍历的结果。
先序:
中序:
后序:
按层:
3.已知一个图的顶点集V和边集G分别为:
V={0,1,2,3,4,5,6,7};
E={(0,1)8,(0,2)5,(0,3)2,(1,5)6,(2,3)25,(2,4)13,(3,5)9,(3,6)10,(4,6)4,(5,7)20,(6,7)30};
按照普里姆算法从顶点0出发得到最小生成树,试写出在生成最小生成树的过程中依次得到的各条边。
________,________,________,________,________,________,________。
4.已知一个图的顶点集V和边集G分别为:
V={0,1,2,3,4,5,6,7,8};
E={<0,2>,<1,3>,<1,4>,<2,4>,<2,5>,<3,6>,<3,7>,<4,7>,<4,8>,<5,7>,<6,7>,<7,8>};
若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序链接的,则按主教材中介绍的进行拓扑排序的算法,写出得到的拓扑序列(提示:
先画出对应的图形,然后再运算)。
拓扑序列:
5.假定一组记录的排序码为(46,79,56,38,40,80,25,34),则对其进行快速排序的第一次划分后的结果为________________。
四、算法填空(10分)
1.
五、编程(10分)
1.设计算法以求解从集合{1..n}中选取k(k<=n)个元素的所有组合。
例如,从集合{1..4}中选取2个元素的所有组合的输出结果为:
12,13,14,23,24,34。
数据结构作业题(五)
一、选择题(每题2分,共20分)
1.若需要利用形参直接访问实参,则应把形参变量说明为()参数。
A指针B引用C值
2.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行()。
Aq一>next=p一>next;p一>next=q;
Bp一>next=q一>next;q=p;
C9一>next=p一>next;p一>next=q;
Dp一>next=q一>next;q一>next=p;
3.在一个顺序队列中,队首指针指向队首元素的()位置。
A前一个B后一个C当前
4.向二叉搜索树中插入一个元素时,其时间复杂度大致为()。
AO
(1)BO(1og2n)
CO(n)DO(nlog2n)
5.假设有两个串A和B,求B在A中首次出现的位置的操作,我们称为()。
A.连接B.模式匹配C.求子串D.求串长
6.我们对记录进行排序的目的是()。
A.分类B.合并C.存储D.查找
7.在最坏的情况下,冒泡排序法的时间复杂度为()。
(lgn)(nlgn)(n2)(n)
8.广义表(A,B,E,F,G)的表尾是()。
A.(B,E,F,G)B.()C.(A,B,E,F,G)D.(G)
9.线性表如果采用链式存储结构,要求内存中的存储单元的地址()。
A.必须是连续的
B.部分要求是连续的
C.一定不是连续的
D.可以是连续的,也可以是不连续的
10.在数据结构中,从逻辑结构上,我们可以把数据结构分为()。
A.线性结构和非线性结构
B.内部结构和外部结构
C.顺序结构和链式结构
D.动态结构和静态结构
二、填空题(每空1分,共25分)
1.数据的逻辑结构被分为、、和四种。
2.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为,在表尾插入元素的时间复杂度为。
3.在一个稀疏矩阵中,每个非零元素所对应的三元组包括该元素的、和
三项。
4.在广义表的存储结构中,每个结点均包含有个域。
5.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件为。
6.假定一棵三叉树的结点个数为50,则它的最小深度为,最大深度为。
7.在一棵二叉树中,第5层上的结点数最多为。
8.在一个小根堆中,堆顶结点的值是所有结点中的,在一个大根堆中,堆顶