数据结构1-7章自测题

  • 格式:doc
  • 大小:81.00 KB
  • 文档页数:8

一、填空题 1. 在单链表中,除了头结点以外,任一结点的存储位置由 指示。 2. 广义表A=((),(a),(b,(c,(d))))的长度为 ,深度为 。 3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 _个元素,删除第i个元素时,需向前移动 个元素。 4. 一棵深度为6的满二叉树有______个非叶子结点。 5. 下面程序段的时间复杂度是 。 for(i=0;i for(j=1;j A[i][j]=0;。 6. 设数组A[1..10,1..8]的基地址为2000,每个元素占2个存储单元,若以行序为主序顺序存储,则元素A[4,5]的存储地址为_____;若以列序为主序顺序存储,则元素A[4,5]的存储地址为______。 7. 栈和队列都是 的线性表,对于栈只能在 插入和删除元素;对于队列只能在 插入元素和 删除元素。 8. 将n阶对称矩阵只存储下三角部分,共需 个存储空间。 9. 在具有n个单元的循环队列中,队满时共有 个元素。 10. 有向图G可拓扑排序的判别条件是______。

二、判断题 1. ( )数据元素是数据不可分割的最小单位。 2. ( )两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。 3. ( )链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。 4. ( )线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。 5. ( )数组可看成线性结构的一种推广,因此与线性表一样,可以对它进行插入,删除等操作。 6. ( )若一个广义表的表尾为空表,则此广义表亦为空表。 7. ( )完全二叉树一定存在度为1的结点。 8. ( )对一棵一般树的结点的前序(根)遍历和后序(根)遍历分别与它相应二叉树的结点前序遍历和后序遍历是一致的。 9. ( )无向图的邻接矩阵是对称的。 10. ( )拓扑排序算法把一个无向图中的顶点排成一个有序序列。

三、单项选择题 1. 数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:( ) (A)存储结构 (B)逻辑结构 (C)顺序存储结构 (D)链式存储结构

2. 下面关于线性表的叙述中,错误的是哪一个?( ) (A)线性表采用顺序存储,必须占用一片连续的存储单元。 (B)线性表采用顺序存储,便于进行插入和删除操作。 (C)线性表采用链接存储,不必占用一片连续的存储单元。 (D)线性表采用链接存储,便于插入和删除操作。

3. 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:( ) (A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) (B)在第i个结点后插入一个新结点(1≤i≤n) (C)删除第i个结点(1≤i≤n) (D)将n个结点从小到大排序

4. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?( )

(A)5 4 3 6 1 2 (B)4 5 3 1 2 6 (C)3 4 6 5 2 1 (D)2 3 4 1 5 6 5. 在数组表示的循环队列中,front、rear分别为队列的头、尾指针,maxSize为数组的最大长度,队满的条件是( )。

(A)front=maxSize (B)(rear+1)%maxSize=front (C)rear=maxSize (D)rear=front 6. 若串S=’software’,其子串的数目是( )。 (A)8 (B)9 (C)36 (D)37 7. 设A是n*n的对称矩阵,将A的对角线及对角线上方的元素以列为主的次序存放在一维数组B[1..n(n+1)/2]中,对上述任一元素aij(1≤i,j≤n,且i≤j)在B中的位置为( )。

(A)i(i-l)/2+j (B)j(j-l)/2+i (C)j(j-l)/2+i-1 (D)i(i-l)/2+j-1 8. 某表示算式的二叉树中序遍历得到中缀表达式a+b*c-d,则与其等价的前缀表达式是( )。

(A)+a-*bcd (B)*+-abcd (C)-+a*bcd (D)abcd+*- 9. 下面结构中最适于表示稀疏无向图的是( )。 (A)邻接矩阵 (B)逆邻接表 (C)十字链表 (D)邻接表 10. 在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是( )。 A.G中有弧 B.G中有一条从Vi到Vj的路径 C.G中没有弧 D.G中有一条从Vj到Vi的路径

四、程序题。 1. 栈的元素类型SElem Type为char void main( ){ Stack S; char x,y; InitStack(S); x=’c’;y=’k’; push(S,x); push(S,’a’); push(S,y); pop(S,x); push(S,’t’); push(S,x); pop(S,x); push(S,’s’); while(!StackEmpty(S)){ pop(S,y);printf(y); }; printf(x); } 结果:_____________________

2. 写出下列程序段的输出结果(队列中的元素类型QElem Type为char)。 void main( ){ Queue Q; Init Queue (Q); Char x=’e’; y=’c’; EnQueue (Q,’h’); EnQueue (Q,’r’); EnQueue (Q, y); DeQueue (Q,x); EnQueue (Q,x); DeQueue (Q,x); EnQueue (Q,’a’); while(!QueueEmpty(Q)){ DeQueue (Q,y);printf(y); }; Printf(x); } 结果:_____________________ 3. 简述以下算法的功能(栈和队列的元素类型均为int)。 void algo3(Queue &Q){ Stack S; int d; InitStack(S); while(!QueueEmpty(Q)){ DeQueue (Q,d); Push(S,d); } while(!StackEmpty(S)){ Pop(S,d); EnQueue (Q,d); } }

4. 下面是用c语言编写的对不带头结点的单链表进行就地逆置的算法,该算法用L返回逆置后的链表的头指针,试在空缺处填入适当的语句。 void reverse(linklist &L){ p=null;q=L; while(q!=null){ (1) ; q->next=p; p=q; (2)___ ; } (3)_____; }

五、程序题 1. 画出广义表A=((a),(b),c,((d,e)))的存储结构图,其中表节点与原子节点均包含三个项。 2. 将自己学号的每一位数字作为节点,数值为节点权值,以这些数字(重复的数字仅取一个)作为数据元素的集合,构造并画出一棵哈夫曼树,并求这棵树的带权路径长度(子树根权值相同时节点少的作为左子树)。 3. 已知一个无向图如下图所示,要求分别用Prim和Kruskal算法生成最小树(写出详细生成过程)

4. 试将森林 F={ T1,T2,T3,T4 }转换为一棵二叉树。

T1 T2 T3 T4 第七章 图作业 1.n个顶点的完全有向图中包含____条弧;n个顶点的完全无向图中包含_____条边。 2.无向图的极大连通子图称为_________;有向图的极大强连通子图称为_________。

1 2 6 5 4 3 2

0

10 11 7

6 18

12 14

5 9

3.6×6的邻接矩阵A中,只有A12、A42、A31、A64、A35、A51、A65的值为1,判断此邻接矩阵表示的图类型,画出此图并写出相应的邻接表。 4.画出下列有向图的邻接表和逆邻接表,比较两个表中链表节点总个数是否相同

5.找出下面网络的最小生成树,并简述所用算法的思路。

第九章 查找作业 1.对(4,8,10,16,20,30,48,74,88,100)使用二分查找法查找元素50,所需要进行比较的元素是___________________________,然后输出不成功。 2.顺序表查找的ASL通式为________,二分查找的ASL通式为________,对二叉排序树的ASL通式为________。 3.试按表( 10, 8, 9, 12, 20, 5, 6, 15, 19)中元素的排列次序, 将所有元素插入一棵初始为空的平衡二叉排序树中, 使之仍是一棵平衡的二叉排序树。 4.利用除留余数法将第3题中的各元素置入哈希查找表,表长为11,冲突解决算法选线性探测法,写出此哈希查找表。