数据结构习题汇总北邮.docx
- 文档编号:8200623
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:17
- 大小:71.10KB
数据结构习题汇总北邮.docx
《数据结构习题汇总北邮.docx》由会员分享,可在线阅读,更多相关《数据结构习题汇总北邮.docx(17页珍藏版)》请在冰豆网上搜索。
数据结构习题汇总北邮
2005-12-19准备题
填空题
1.顺序表、栈和队列都是_______结构,可以在顺序表的_______位置插入和删除元素;对于栈只能在_______插入和删除元素;对于队列只能在_______插入元素和_______删除元素。
2.由头指针head指向的非空循环单链表,尾结点为p,则head和p满足条件_______________。
3.共H层的完全二叉树至少有个结点,至多有个结点,若按自上而下、从左到右次序给结点编号(从0开始),则编号最小的叶子结点的编号是_________。
4.n个顶点的连通图至少有条边。
5.在无向图G的邻接矩阵A中,若A[i][j]等于1,则A[j][i]等于
6.任何一个具有n个结点的无向图的边数小于或等于_______________。
7.任何一个具有n个结点的完全有向图的边数为_______________。
8.排序方法的稳定是指___________________________________。
9.根据数据元素之间的关系,数据在计算机中的存储有两种不同的存储结构,分别是:
______存储结构和______存储结构。
10.在数据结构中,数据元素之间通常有下列四类基本结构:
______、________、_______和________。
11.通过衡量一个算法的______复杂度和______复杂度来进行判定一个算法的好坏。
12.线性表的最主要的两种应用是______和______,它们之间最重要的区别是:
一个是__________、另一个是__________。
13.m*n的稀疏矩阵中,有t个元素不为零,则该矩阵的稀疏因子为______,对于稀疏矩阵,我们通常对其进行______存储。
14.字符串的五种基本操作是:
串______、串______、______、串______和______。
15.在二叉树的链式存储结构中,n个结点的二叉链表中有______个空链域。
16.对于n个结点的二叉树来说,遍历时的时间复杂度为______,空间复杂度为______。
17.树的常见的三种链表结构为________表示法、________表示法和________表示法。
18.在折半查找中,查找终止的条件为________________________________。
19.Hash表的构造方法中,经统计证明最好的方法是____________法。
20.在内部排序中,利用修改指针值来代替移动记录的排序方法是___________排序。
21.按照锦标赛排序的思想,决出8个选手的名次排列,共需要进行______场比赛(考虑最坏的情况)。
22.在n个元素的顺序表中插入或删除一个元素,需平均移动______个元素。
选择
1.在双向链表p所指结点之后插入s所指结点的操作是______________
A.pright=s;sleft=p;prightleft=s;sright=pright;
B.pright=s;prightleft=s;sleft=p;sright=pright;
C.sleft=p;sright=pright;pright=s;prightleft=s;
D.sleft=p;sright=pright;prightleft=s;pright=s;
2.在数据结构中,从逻辑上可以把数据结构分成_________。
A.动态结构和静态结构B.紧凑结构和非紧凑结构
C.线性结构和非线性结构D.内部结构和外部结构
3.算法分析的两个主要方面是____。
A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性4.线性表的顺序存储结构是一种______的存储结构,线性表的链式存储结构是一种______的存储结构。
A.随机存取B.顺序存取C.索引存取D.散列存取
5.向量、栈和队列都是______结构,可以在向量的________位置插入和删除元素;对于栈只能在_________插入和删除元素;对于队列只能在_______插入元素和在_______删除元素。
6.设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为___________。
A.r-fB.r-f+1C.(r-f)modn+1D.(r-f+n)modn
7.将下三角矩阵A[7,7]的下三角部分逐行地存储到起始地址为1000的内存单元中(下标从0开始,不存储上三角部分),已知每个元素占4个单元,则A[5,4]的地址是_____________。
8.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是______
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
9.串是一种特殊的线性表,其特殊性体现在__
A.可以顺序存储B.数据元素是一个字符
C.可以链接存储D.数据元素可以是多个字符
10.算法分析的目的是。
A.找出数据结构的合理性B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进D.分析算法的易懂性和文档性
11.每种结构都具备三个基本运算:
插入、删除和查找,这种说法
A.正确B.不正确
12.判定一个顺序栈ST(最多元素个数为MAX)为空的条件是。
A.ST.top!
=ST.bottomB.ST.top==ST.bottom
C.ST.top!
=MAXD.ST.top==MAX
13.一个队列的入列序列是1,2,3,4,则队列的输出序列是。
A.4,3,2,1B.1,2,3,4C.1,4,3,2D.3,2,4,1
14.不带头结点的单链表head为空的判定条件是
A.head==NULL
B.head->next==NULL
C.head->next==head
D.head!
=NULL
15.从一个具有n个结点的单链表中查找其值等于x结点时,在等概率查找成功的情况下,需平均比较______个结点。
A.nB.n/2C.(n—1)/2D.(n+1)/2
16.共h层的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为
A2hB2h-1C2h+1Dh+1
17.采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为_____________。
A.nB.n/2C.(n-1)/2D.(n+1)/2
18.在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行____________________。
A.s→link=p→link;p→link=s;B.p→link=s;s→link=q;
C.p→link=s→link;s→link=p;D.q→link=s;s→link=p;
19.如果想在4092个数据中只需要选择其中最小的5个,采用__________方法最好。
A.起泡排序B.堆排序C.锦标赛排序D.快速排序
20.设有两个串t和p,求p在t中首次出现的位置的运算叫做____________。
A.求子串B.模式匹配C.串替换D.串连接
21.在数组A中,每一个数组元素A[i,j]占用3个存储字,行下标i从1到8,列下标j从1到10。
所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是_____________。
A.80B.100C.240D.270
22.将一个递归算法改为对应的非递归算法时,通常需要使用____________。
A.栈B.队列C.循环队列D.优先队列
23.一个队列的进队列顺序是1,2,3,4,则出队列顺序为_______________。
A.4,3,2,1B.2,4,3,1C.1,2,3,4D.3,2,1,4
24.在循环队列中用数组A[0..m-1]存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是_______________。
A.(front-rear+1)%mB.(rear-front+1)%m
C.(front-rear+m)%mD.(rear-front+m)%m
25.任一棵二叉树,其叶子结点数为n0,度为2的结点数为n2,则存在关系_______。
从如下所示(A)、(B)、(C)、(D)中选择。
A.n2+1=n0、B.n0+1=n2、C.2n2+1=n0、D.n2=2n0+1
26.
(1)已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列
a.删除P结点的直接后继结点的语句序列是__________
b.删除P结点的直接前驱结点的语句序列是__________
c.删除P结点的语句序列是__________
d.删除首结点的语句序列是__________
e.删除尾结点的语句序列是__________
(1)P=P->next
(6)P->next=P
(10)while(P->next->next!
=NULL)P=P->next;
(2)P=L
(7)P=P->next->next
(11)while(P!
=NULL)P=P->next;
(3)L=L->next
(8)P->next=
P->next->next
(12)while(Q->next!
=NULL)
{P=Q;Q=Q->next;}
(4)Q=P
(9)free(Q)
(13)while(Q->next!
=Q)P=P->next;
(5)Q=P->next
(14)while(P->next->next!
=Q)P=P->next;
(2)已知P结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列
a.在P结点后插入S结点的语句序列是__________
b.在P结点前插入S结点的语句序列是__________
c.删除P结点的直接后继结点的语句序列是__________
d.删除P结点的直接前驱结点的语句序列是__________
e.删除P结点的语句序列是__________
(1)P->next=P->next->next
(7)P->next=S
(13)P->prior->next=P->next
(2)P->prior=P->prior->prior
(8)P->prior=S
(14)P->prior->next=P
(3)S->next=P->next
(9)P->prior->next=S
(15)P->next->prior=P->prior
(4)S->prior=P->prior
(10)Q=P->next
(16)Q=P->prior
(5)P->next->prior=P
(11)S->next=P
(17)free(Q)
(6)P->next->prior=S
(12)S->prior=P
(18)free(P)
简答题
1.已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列
a.删除P结点的直接后继结点的语句序列是__________
b.删除P结点的直接前驱结点的语句序列是__________
c.删除P结点的语句序列是__________
d.删除首结点的语句序列是__________
e.删除尾结点的语句序列是__________
(1)P=P->next
(6)P->next=P
(10)while(P->next->next!
=NULL)P=P->next;
(2)P=L
(7)P=P->next->next
(11)while(P!
=NULL)P=P->next;
(3)L=L->next
(8)P->next=
P->next->next
(12)while(Q->next!
=NULL)
{P=Q;Q=Q->next;}
(4)Q=P
(9)free(Q)
(13)while(Q->next!
=Q)P=P->next;
(5)Q=P->next
(14)while(P->next->next!
=Q)P=P->next;
2.对于下左图所示的二叉树,该树的三种遍历序列分别为:
3.对于下图所示的二叉树,请画出和其相对应的森林。
4.将树T转换成二叉树T’。
5.若一棵二叉树的前序序列为ADCBFKHIGJE,中序序列为BCDKFHAGIJE,请画出该二叉树。
6.判断以下序列是否为大根堆?
若否,则以最少的移动次数将它们调整为大根堆。
(不要求过程)
1.(38,56,25,23,40,100,29,61,35,76,28,20)
2.(21,66,39,73,86,48,52,90,75,88)
3.(12,70,33,65,24,56,48,92,86,33,21)
7.在一个有n个元素的顺序表的第i个元素(1in)之前插入一个新元素时,需要向后移动多少个元素?
8.当一个栈的进栈序列为1234567时,可能的出栈序列有多少种?
6457321是否是合理的出栈序列?
9.简单(直接)选择排序是一种稳定的排序方法吗?
试举例说明?
10.设有序顺序表为{10,20,30,40,50,60,70},采用折半搜索时,搜索成功的平均搜索长度是多少?
11.分别画出和下列二叉树对应的各个二叉树,并分别按树和二叉树的遍历规则给出先根遍历序列、后根遍历序列。
12.判断以下序列是否为堆(大顶堆或小顶堆)。
如果不是,则把它们调整为堆(要求交换记录次数最少)。
(1)(120,87,46,78,39,40,45,59,65,22)
(2)(10,59,22,23,44,39,29,60,38,77,27,101)
(3)(19,78,32,66,26,58,46,95,89,31)
(4)(113,98,69,35,68,25,43,19,31,55,16,29)
13.请将下图所示树T转换为二叉树T’。
TT’
14.画出下图所示的无向图的邻接表(顶点由小到大排列),并根据所得邻接表给出深度优先和广度优先搜索遍历该图所的顶点序列。
15.一棵高度为h的满k叉树有如下性质:
第h层上的结点都是叶结点,其余各层上每个结点都有k棵非空子树,如果按层次自顶向下,同一层自左向右,顺序从0开始对全部结点进行编号,试问:
(1)各层的结点个数是多少?
(2)编号为i的结点的父结点(若存在)的编号是多少?
(3)编号为i的结点的第m个孩子结点(若存在)的编号是多少?
(4)编号为i的结点有右兄弟的条件是什么?
其右兄弟结点的编号是多少?
(5)叶子结点数n0和非叶子结点数nk之间满足的关系。
16.
(1)说明下列各程序段中前置以记号@的语句的频度
(a)k=0;
for(i=1;i<=n;i++){
for(j=i;j<=n;j++)
@k++;
}
答:
(b)i=1;j=0;
while(i+j<=n){
if(i>j)
@j++;
elsei++;
}
答:
(2)说明下列算法的功能(栈的元素类型SElemType为int)
statusalgo(StackS,inte){
StackT;intd;
InitStack(T);
while(!
StackEmpty(S)){
Pop(S,d);if(d!
=e)Push(T,d);
}
while(!
StackEmpty(T)){
Pop(T,d);Push(S,d);
}
}
答:
17.假设高度为H的二叉树上只有度为0和度为2的结点,问此类二叉树中结点数可能达到的最大值和最小值各是多少?
18.用十字链表表示稀疏矩阵,
若有一矩阵8行7列,其中有10个非零元素,
问:
该矩阵的十字链表总共需用多少个结点?
19.判断以下序列是否为堆?
若否,则以最少的移动次数将它们调整为堆。
(1.)(38,56,25,23,40,100,29,61,35,76,28,20)
(2.)(21,66,39,73,86,48,52,90,75,88)
(3.)(12,70,33,65,24,56,48,92,86,33,21)
20.无向图如图所示:
邻接表的形式说明:
typedefstructnode
{
intadjvex;
structnode*next;
}edgenode;
typedefstruct
{
vextypevertex;
edgenode*link;
}vexnode;
vexnodega[n];
建表算法:
CreateADJList(vexnodega[])
{
inti,j,k;
edgenode*s;
for(i=0;i { ga[i].vertex=getchar(); ga[i].link=NULL; } for(k=0;k { scanf(“%d%d”,&i,&j); s=malloc(sizeof(edgenode)); s->adjvex=j; s->next=ga[i].link; ga[i].link=s; s=malloc(sizeof(edgenode)); s->adjvex=i; s->next=ga[j].link; ga[j].link=s; } } 2.若该图以如上所示邻接表为存储结构, (1)写出从结点1开始广度优先搜索的线性序列: (2)写出从结点1开始深度优先搜索的线性序列: 21.求一棵满k叉树上的叶子结点数n0和非叶子结点数nk之间满足的关系 22.假设高度为H的二叉树上只有度为0和度为2的结点,问此类二叉树中结点数可能达到的最大值和最小值各是多少? 23.堆栈s如图所示,有堆栈操作算法X1和X2,按如下顺序执行X1;X2;X2;X1;试问第二次执行完X1后,返回何值。 算法X1: datatypeX1(seqstack*s) D C B A { if(EMPTY(s)) {TOP cout<<“underflow”; returnNULL; } else { s->top--; return(s->data[s->top+1]); } } 算法X2: datatypeX2(seqstack*s) { if(EMPTY(s)) { cout<<“stackisempty”; returnNULL; } else return(s->data[s->top]); } 24.根据下面的矩阵,写出相应的三元组表,并写出矩阵转置后的三元组表。 (不要求过程) 01290000 0000500 -30000140 00130000 01800000 15000000 25.判断以下序列是否为小(顶)根堆? 若否,则以最少的移动次数将它们调整为小(顶)根堆。 (要求画出最后的堆结构和线性序列) (1)(19,78,32,66,26,58,46,95,89,31) (2)(113,98,69,35,68,25,43,19,31,55,16,29) 26.设有关键码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要求按照关键码值递增的次序进行排序。 (1)若采用初始步长为4的Shell(希尔)排序法,写出一趟排序的结果; (2)若采用以第一个元素为分界元素(枢轴)的快速排序法,写出一趟排序的结果。 计算题 1.假设用于通信的电文仅由10个字符(A,B,C,D,E,F,G,H,I,J)组成,字符在电文中出现的频率分别为(0.10,0.19,0.02,0.05,0.17,0.03,0.21,0.07,0.15,0.01)。 (1)画出哈夫曼树; (2)最长的编码为几位,对应哪些字符? 最短的编码为几位,对应哪些字符。 计算其带权路径长度。 2.设一个散列表包含hashSize=13个表项,.其下标从0到12,采用线性探查法解决冲突.请按以下要求,将下列关键码散列到表中. 101003245581263292004000 (1)散列函数采用除留余数法,用%hashSize(取余运算)将各关键码映像到表中.请指出每一个产生冲突的关键码可能产生多少次冲突. (2)散列函数采用先将关键码各位数字折叠相加,再用%hashSize将相加的结果映像到表中的办法.请指出每一个产生冲突的关键码可能产生多少次冲突. 3.设权值W={2,8,4,5,9,6} (1)请构造一棵哈夫曼树。 (2)求出哈夫曼树的带权路径长度WPL。 4.已知某系统在通信联络中只可能出现八种字符,其概率分别为0.07(A)、0.19(B)、0.02(C)、0.06(D)、0.32(E)、0.03(F)、0.21(G)、0.10(H),试设计Huffman编码。 5.已知八个字符A,B,C,D,E,F,G,H在电文中出现的频率分别为0.08、0.17、0.02、0.07、0.32、0.03、0.21、0.10,若为之设计一组哈夫曼编码,则问其中最长的编码和最短的编码各是什么? 对应于哪些字符,若电文总长为500个字符,则对应的哈夫曼码的总长为多少? 6.已知某系统在通信联络中只可能出现八种字符,其概率分别为0.07(A)、0.19(B)、0.02(C)、0.06(D)、0.32(E)、0.03(F)、0.21(G)、0.10(H)。 (1)试设计Huffman编码。 (2)若原电文总长为500个字符,则经哈夫曼编码后,电文总长为多少? 平均码长为多少? 7.已知八个字符A,B,C,D,E,F,G,H在电文中出现的频率分别为0.08、0.17、0.02、0.07、0.32、0.03、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题 汇总