a[i][j]=i*j;
A、O(m2)B、O(n2)C、O(m*n)D、O(m+n)
9.执行下面程序段时,执行S语句的次数为____________。
for(inti=1;i<=n;i++)
for(intj=1;j<=i;j++)
S;
A、n2B、n2/2C、n(n+1)D、n(n+1)/2
二.填空题
1.通常,评价一个算法有正确性、健壮性、_________、时间复杂度、空间复杂度五个方面。
2.在数据结构中,数据的逻辑结构有线性结构、图结构、________________、_______________四种,物理实现上有顺序结构、索引结构、___________、_____________四种。
第三章线性表
一.选择题
1.在一个单链表HL中,若要向q所指结点之后插入一个指针p指向的结点,则执行.
A.HL=p;p->next=HLB.P->next=HL;HL=p
C.P->next=q->next;q->next=pD.P->next=q->next;q=p->next
2.在一个长度为n的顺序存储线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移个元素。
A、n-iB、n-i+1C、n-i-1D、i
3.在一个长度为n的顺序存储线性表中,删除第i个元素(1≤i≤n+1)时,需要从前向后依次前移个元素。
A、n-iB、n-i+1C、n-i-1D、i
4.在一个长度为n的线性表中顺序查找值为x的元素时,查找时的平均查找长度(即x同元素的平均比较次数,假定查找每个元素的概率都相等)为。
A、nB、n/2C、(n+1)/2D、(n-1)/2
5.在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行。
A、HL=p;p->next=HL;B、p->next=HL;HL=p;
C、p->next=HL;p=HL;D、p->next=HL->next;HL->next=p;
6.在一个单链表HL中,若要在指针q所指的结点的后面插入一个由指针p所指的结点,则执行。
A、q->next=p->next;p->next=q;B、p->next=q->next;q=p;
C、q->next=p->next;p->next=q;D、p->next=q->next;q->next=p;
7.在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行。
A、p=q->next;p->next=q->next;B、p=q->next;q->next=p;
C、p=q->next;q->next=p->next;D、q->next=q->next->next;q->next=q;
6.链表不具有的特点是 。
A.不必事先估计存储空间 B.可随机访问任一元素
C.插入删除不需要移动元素 D.所需空间与线性表长度成正比
二.填空题
1.在单链表中,删除指针P所指结点的后继结点的语句是:
。
2.在以HS为表头指针的单链表中,链表为空的条件分别为________。
向一个链栈插入p所指向的结点时,需要把栈顶指针的值赋给p所指向的结点的_____,然后把p赋给_______。
3.在带表头附加结点的线性链表HL中,链表为空的条件为________________。
对于单链表,若要在指针P所指结点之后插入由指针S所指结点,则需要执行的语句序列为:
。
4.在线性表的顺序存储结构中,若每一个元素占l个存储单元,则第I个元素ai的存储位置为 LOC(ai)=LOC(a1)+
5.在线性表的单链接存储结构中,每个结点包含有两个域,一个叫域,另一个叫域。
6.在下面数组a中链接存储着一个线性表,表头指针为a[0].next,则该线性表为
7.对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为,在表尾插入元素的时间复杂度为。
8.对于一个长度为n的单链接存储的线性表,在表头插入元素的时间复杂度为,在表尾插入元素的时间复杂度为。
9.在线性表的顺序存储中,若一个元素的下标为i,则它的前驱元素的下标为,后继元素的下标为。
10.在线性表的单链接存储中,若一个元素所在结点的地址为p,则其后继结点的地址为,若假定p为一个数组a中的下标,则其后继结点的下标为。
11.在循环单链表中,最后一个结点的指针指向结点。
12.在双向链表中每个结点包含有两个指针域,一个指向其结点,另一个指向其结点。
13.在循环双向链表中表头结点的左指针域指向结点,最后一个结点的右指针域指向结点。
14.在以HL为表头指针的带表头附加结点的单链表和循环单链表中,链表为空的条件分别为和。
第四章栈和队列
一.选择题
1.栈的插入与删除操作在进行。
A、栈顶B、栈底C、任意位置D、指定位置
2.当利用大小为N的一维数组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入一个元素时,首先应执行语句修改top指针。
A、top++B、top--C、top=0D、top
3.若让元素1,2,3依次进栈,则出栈次序不可能出现种情况。
A、3,2,1B、2,1,3C、3,1,2D、1,3,2
4.在一个循环顺序队列中,队首指针指向队首元素的位置。
A、前一个B、后一个C、当前D、后面
5.当利用大小为N的一维数组顺序存储一个循环队列时,该队列的最大长度为。
A、N-2B、N-1C、ND、N+1
6.从一个循环顺序队列删除元素时,首先需要。
A、前移一位队首指针B、后移一位队首指针
C、取出队首指针所指位置上的元素D、取出队尾指针所指位置上的元素
7.假定一个循环顺序队列的队首和队尾指针分别为f和r,则判断队空的条件是。
A、f+1==rB、r+1==fC、f==0D、f==r
8.假定一个链队的队首和队尾指针分别为front和rear,则判断队空的条件是。
A、front==rearB、front!
=NULLC、rear!
=NULLD、front==NULL
9、一个队列的进队列顺序是1,2,3,4,则出队列顺序为()。
A:
4,3,2,1B:
2,4,3,1C:
1,2,3,4D:
3,2,1,4
10.当利用大小为N的数组顺序存储一个栈时,如果使用top==0表示栈空,那么该栈最多可保存______个数据。
A.NB.N+1C.N-1D.0
11.假定一个链队的队首和队尾指针分别为front和rear,则判断队空的条件为
A.front==rearB.front!
=NULLC.rear!
=NULLD.front==NULL
12.设输入序列为1、2、3、4,则借助栈所得到的输出序列不可能是 。
A.1、2、3、4 B.4、3、2、1
C.1、3、4、2 D.4、1、2、3
13.队列的操作原则是 。
A.先进后出 B.先进先出 C.只能进行插入 D.只能进行删除
二.填空题
1.队列的插入操作在进行,删除操作在进行。
2.栈又称为表,队列又称为表。
3.向一个顺序栈插入一个元素时,首先使后移一个位置,然后把待插入元素
到这个位置上。
4.从一个栈中删除元素时,首先取出,然后再前移一位。
5.在一个循环顺序队列Q中,判断队空的条件为,判断队满的条件为。
6.在一个顺序栈中,若栈顶指针等于,则为空栈;若栈顶指针等于,则为满栈。
7.在一个链栈中,若栈顶指针等于NULL,则为;在一个链队中,若队首指针与队尾指针的值相同,则表示该队列为或该队列为。
8.向一个链栈插入一个新结点时,首先把栈顶指针的值赋给,然后把新结点的存储位置赋给。
9.从一个链栈中删除一个结点时,需要把栈顶结点的值赋给。
10.向一个顺序队列插入元素时,需要首先移动,然后再向所指位置新插入的元素。
11、当用长度为N的一维数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件为。
12.向一个栈顶指针为HS的链栈中插入一个新结点*P果,应执行和
操作。
13.从一个栈顶指针为HS的非空链栈中删除结点并不需要返回栈顶结点的值和回收结点时,应执行操作。
14.假定front和rear分别为一个链队的队首和队尾指针,则该链队中只有一个结点的条件为。
15.中缀算术表达式3+4/(25-(6+15))*8所对应的后缀算术表达式为。
16.后缀算术表达式248+3*4107-*/所对应的中缀算术表达式为,
其值为。
17.假设队列Q采用循环队列存储,则队列中当前有 个元素。
18.在用一维数组A[N]存储一个顺序循环队列时,若队列的队首、尾指针分别用f和r表示,则对列长度为_________。
19.中缀表达式5+2*(y-1)/2的后缀表达式为________________________。
20.栈是一种特殊的线性表,它允许在表的一端进行 操作。
三、阅读算法,回答问题(10分)
1、voidAE(Stack&S)
{
InitStack(S);
Push(S,30);
Push(S,20*2);
Push(S,15);
Intx=3*Pop(S)+Pop(S);
Push(S,x);
inti,a[4]={5,9,18,15};
x=0;
For(i=0;i<4;i++){Push(S,a[i]);x+=a[i];}
Push(S,x);
While(!
StackEmpty(S))cout<}
该算法被调用后输出结果为:
3.执行下面函数调用后得到的输出结果是什么?
voidAF(Queue&Q)
{
InitQueue(Q);
inta[4]={5,8,12,15};
for(inti=0;i<4;i++)QInsert(Q,a[i]);
QInsert(Q,QDelete(Q));
QInsert(Q,30);
QInsert(Q,QDelete(Q)+10);
while(!
QueueEmpty(Q))cout<}
第五章树和二叉树
一、填空题
1.对于一棵具有n个结点的树,该树中所有结点的度数之和为______。
2.假定一棵三叉树的结点个数为50,则它的最小深度为________,最大深度为_______。
3.在一棵三叉树中,度为3的结点数有2个,度为2的结点数有1个,度为1的结点数为2个,那么度为0的结点数有________个。
4.一棵深度为5的满二叉树中的结点数为________个,一棵深度为3的满三叉树中的结点数为________个。
8.在一棵二叉树中,假定双分支结点数为5个,单分支结点数为6个,则叶子结点数为________个。
9.对于一棵二叉树,若一个结点的编号为i,则它的左孩子结点的编号为________,右孩子结点的编号为________,双亲结点的编号为________。
10.在一棵二叉树中,第5层上的结点数最多为______。
11.假定一棵二叉树的结点数为18,则它的最小深度为________,最大深度为________。
14.假定一棵二叉树顺序存储在一维数组a中,则a[i]元素的左孩子元素为________,右孩子元素为________,双亲元素(i>1)为________。
15.假定一棵二叉树顺序存储在一维数组a中,但让编号为1的结点存入a[0]元素中,让编号为2的结点存入a[1]元素中,其余类推,则编号为i结点的左孩子结点对应的存储位置为________,若编号为i结点的存储位置用j表示,则其左孩子结点对应的存储位置为________。
16.若对一棵二叉树从0开始进行结点编号,并按此编号把它顺序存储到一维数组a中,即编号为0的结点存储到a[0]中,其余类推,则a[i]元素的左孩子元素为________,右孩子元素为________,双亲元素(i>0)为________。
17.对于一棵具有n个结点的二叉树,对应二叉链表中指针总数为________个,其中________个用于指向孩子结点,________个指针空闲着。
18.已知完全二叉树的第5层有8个结点(根结点在1层),则其叶子结点有 个。
深度为k的二叉树其结点数至多有 个。
二、应用题
1.已知一棵二叉树的先序、中序和后序序列如下所示,请填写各序列中空格处的结点,并画出该二叉树以及它的中序线索二叉链表存储示意图。
先序序列是:
_B_F_ICEH_G
中序序列是:
D_KFIA_EJC_
后序序列是:
_K_FBHJ_G_A
2.已知二叉树的后序和中序序列如下,画出该二叉树以及建立中序线索后的示意图。
先序序列是:
ABDGCEFH
中序序列是:
DGBAECHF
第七章图
一、填空题
1.在一个图中,所有顶点的度数之和等于所有边数的________倍。
2.在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有向完全图中,包含有________条边。
3.在一个具有n个顶点的无向图中,要连通所有顶点则至少需要________条边。
4.表示图的三种存储结构为________、________和________。
5.对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小为________。
6.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别为________和________条。
7.在有向图的邻接表和逆邻接表表示中,每个顶点邻接表分别链接着该顶点的所有________和________结点。
8.对于一个具有n个顶点和e条边的有向图和无向图,若采用边集数组表示,则存于数组中的边数分别为________和________条。
9.对于一个具有n个顶点和e条边的无向图,当分别采用邻接矩阵、邻接表和边集数组表示时,求任一顶点度数的时间复杂度依次为________、________和________。
10.假定一个图具有n个顶点和e条边,则采用邻接矩阵、邻接表和边集数组表示时,其相应的空间复杂度分别为________、________和________。
11.对用邻接矩阵表示的图进行任一种遍历时,其时间复杂度为________,对用邻接表表示的图进行任一种遍历时,其时间复杂度为________。
12.对于下面的无向图G1,假定用邻接矩阵表示,则从顶点v0开始进行深度优先搜索遍历得到的顶点序列为____________,从顶点v0开始进行广度优先搜索遍历得到的顶点序列为____________。
13.对于下面的有向图G2,假定用邻接矩阵表示,则从顶点v0开始进行深度优先搜索遍历得到的顶点序列为____________,从顶点v0开始进行广度优先搜索遍历得到的顶点序列为____________。
14.对于下面的带权图G3,其最小生成树的权为________。
15.对于下面的带权图G3,若从顶点v0出发,则按照普里姆算法生成的最小生成树中,依次得到的各条边为_______________。
16.对于下面的带权图G3,若按照克鲁斯卡尔算法产生最小生成树,则得到的各条边依次为_______________。
17.假定用一维数组d[n]存储一个AOV网中用于拓扑排序的顶点入度,则值为0的元素被链接成为一个________。
18.对于一个具有n个顶点和e条边的连通图,其生成树中的顶点数和边数分别为________和________。
二、应用题
1.对于下图G4和G5,按下列条件试分别写出从顶点v0出发按深度优先搜索遍历得到的顶点序列和按广度优先搜索遍历得到的顶点序列。
(1)假定它们均采用邻接矩阵表示;
(2)假定它们均采用邻接表表示,并且假定每个顶点邻接表中的结点是按顶点序号从大到小的次序链接的。
2.对于下图G6,试给出一种拓扑序列,若在它的邻接表存储结构中,每个顶点邻接表中的边结点都是按照终点序号从大到小链接的,则按此给出唯一一种拓扑序列。