数据结构习题.pdf
《数据结构习题.pdf》由会员分享,可在线阅读,更多相关《数据结构习题.pdf(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章知识点:1.基本概念:数据结构分类、特点等:如线性结构,是数据元素之间存在一种(一对一关系)数据元素的概念(数据项)2.时空复杂度1、设有数据结构(D,R),其中 D=d1,d2,d3,d4,d5,d6,R=r,r=(d1,d2),(d2,d3),(d3,d4),(d2,d5),(d3,d5)试按照图论中的画法画出其逻辑结构图。d1d5d2d3d4d62、称算法的时间复杂度为O(f(n),其含义是指算法的执行时间和_【1】_的数量级相同。3.计算下面程序段的时间复杂度。x=0;for(i=1;in;i+)for(j=1;j=n-i;j+)x+;解:因为 x+共执行了 n-1+n-2+1=
2、n(n-1)/2,所以执行时间为 O(n).4.计算下面程序段的时间复杂度。x=n;y=0;解:设执行了 t(n)次,则(t(n)+1)=n,推出 t(n)=n-1。所以时间复杂度为 O(n).5.分析下面各程序段的时间复杂度(1)O(n*m)(2)O(log3n)1)for(i=0;in;i+)for(j=0;jm;j+)Aij=0;2)i=1;while(inext=qB.p-next=q-nextC.p=q-nextD.p-next=q-next-next2、在一个头指针为 head 的带头结点单链表中,要向表头插入一个由指针p 指向的结点,则应执行【4】p-next=head-next
3、;、【5】head-next=p。4.在双链表中,在指针 P 所指结点前面插入一个结点S 时的语句序列是:S-next=P;S-prior=P-prior;P-prior=S;_ S-prior-next=S _;3.在双向链表指针 p 的结点前插入一个指针 q 的结点操作是(C)。A.p-Prior=q;q-Next=p;p-Prior-Next=q;q-Prior=p-Prior;B.p-Prior=q;p-Prior-Next=q;q-Next=p;q-Prior=p-Prior;C.q-Next=p;q-Prior=p-Prior;p-Prior-Next=q;p-Prior=q;D.
4、q-Prior=p-Prior;q-Next=p;p-Prior=q;p-Prior-Next=q;4.已知 p 结点是某双向链表的中间结点,要删除p 结点的直接后继结点的语句序列是:DA.p-next-next-prior=p;p-next=p-next-next;q=p-next;free(q);B.q=p-next;p-next=p-next-next;p-next-next-prior=p;free(q);C.q=p-next;p-next-prior=p;p-next=p-next-next;free(q);D.q=p-next;p-next=p-next-next;p-next-p
5、rior=p;free(q);5.设 r 指向单链表的最后一个结点,要在最后一个结点之后插入s 所指的结点,需执行的三条语句是_ P-next=NULL _;r=s;r-next=null;。6.在单链表中,指针 p 所指结点为最后一个结点的条件是_Ls=NULL、ls=ls-link。7对于一个具有 n 个结点的单链表,在已知的结点*p 后插入一个新结点的时间复杂度为O(1),在给定值为 x 的结点后插入一个新结点的时间复杂度为 O(n)_。8.在顺序表中访问任意一结点的时间复杂度均为O(1),因此顺序表也称为随机存取的数据结构。(A)1.在 n 个结点的顺序表中,算法的时间复杂度是O(1)
6、的操作是:(E)访问第 i 个结点(1in)和求第 i 个结点的直接前驱(2in)(F)在第 i 个结点后插入一个新结点(1in)(G)删除第 i 个结点(1in)(H)将 n 个结点从小到大排序9、线性链表不具有的特点是(A)。A随机访问 B不必事先估计所需存储空间大小C插入与删除时不必移动元素 D所需空间与线性表长度成正比10.若某链表最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用(C )存储方式最节省时间。A.单链表B.双链表D.单循环链表 C.带头结点的双循环链表11.带头结点的双循环链表L 为空表的条件是_ L-next=L-prior或 L-next=L _
7、。12.不带头结点的单链表 head 为空的判定条件是head=NULL。13一个带表头结点的单循环链表,指针P 指向链的某一个结点,若P-next-next-next=P,则此链表的长度可能是 0 或 2。14.向一个有 127 个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动(B)个元素A.8 B.C.63 D.715.对于长度为 n 的顺序表执行删除操作,则其结点的移动次数(C)A.最少为 0,最多为 n B.最少为 1,最多为 nC.最少为 0,最多为 n-1 D.最少为 1,最多为 n-116.线性表的长度是线性表所占用的存储空间的大小。(F)17.双循环链表中,任意一结
8、点的后继指针均指向其逻辑后继。(T)18、线性表在 B情况下适用于使用链式结构实现。、需经常修改中的结点值、需不断对进行删除插入、中含有大量的结点、中结点结构复杂19 若某线性表中最常用的操作是取第i 个元素和找第i 个元素的前趋元素,则采用()存储方式最节省时间。单链表双链表单向循环顺序表1.假设线性表 L=(a1,a2,an)用带头结点的单链表存储表示,试编写算法对其实现就地逆置,即利用原链表中每一个结点存储空间,使得元素的逻辑次序改变为(an,a2,a1)。2试编写算法,以统计带头结点单链表的元素个数。3.设某单链表的结点结构为 data|next,试编写算法判断该链表的元素是否是递增的
9、。4.已知单链表 L 是一个递增有序表,试写一高效算法,删除表中值大于min且小于 max的结点(若表中有这样的结点),同时释放被删结点的空间,这里min和max 是两个给定的参数。请分析你的算法的时间复杂度。第 3 章 栈和队列知识点:栈、循环队列考点:出入栈操作、栈和队列特点、循环队列操作(元素个数、队头队尾指针)、应用1一个栈的入栈序列是 1、2、3、4,若第二个出栈的元素是 4,则最后出栈的元素可能是或。2.一个栈的输入序列为 1 2 3 4 5,则下列序列中不可能是栈的输出序列的是(B )A.2 3 4 1 5 C.2 3 1 4 5B.5 4 1 3 2D.1 5 4 3 23.在
10、对链队列作出队操作时,不会改变front 指针的值。(T )4.若一个栈的输入序列为123n,其输出序列的第一个元素为n,则其输出序列的每个元素ai一定满足 ai=n-i+1(i=1,2.,n)(T )5.栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶 ,不允许插入和删除运算的一端称为栈底。6、如果入栈序列是 1,3,5,97,99,且出栈序列的第一个元素为99,则出栈序列中第 30 个元素为_41 _。7有 5 个元素,其入栈次序为:A,B,C,D,E,在各种可能的出栈次序中,以元素C,D最先出栈(即 C 第一个且 D 第二个出栈)的次序有哪几个答:三个:CDEBA,CDBEA,CD
11、BAE8、向顺序栈中压入新元素时,应当(A)。A先移动栈顶指针,再存入元素 B先存入元素,再移动栈顶指针C先后次序无关紧要 D同时进行9.设一个链栈的栈顶指针是ls,栈中结点格式为 info|link,栈空的条件是_.如果栈不为空,则退栈操作为p=ls;_ Ls=NULL、ls=ls-;free(p);。10.如果以链表作为栈的存储结构,则退栈操作时()必须判别栈是否满 对栈不作任何判别 必须判别栈是否空 判别栈元素的类型11.判定一个栈 ST(最多元素为 m0)为空的条件是 BST-top0ST-top=0ST-topm0ST-top=m0(D)12数组用来表示一个循环队列,为当前队列头元素
12、的前一位置,为队尾元素的位置,假定队列中元素的个数小于,计算队列中元素的公式为()rf;()(nfr)%n;()nrf;()(nrf)%n13.判定一个队列 QU(最多元素为 m0)为满队列的条件是 AAQU-rear QU-front=m0 B QU-rear QU-front 1=m0CQU-front=QU-rear DQU-front=QU-rear+114.设循环队列的容量为 40(序号从 0 到 39),现经过一系列的入队和出队运算后,有 front=11,rear=19;front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个答:L=(401911)%40=8
13、 L=(401119)%40=3215、假设为循环队列分配的向量空间为Q20,若队列的长度和队头指针值分别为13 和 17,则当前尾指针的值为_10_。16.设数组 Data0.m作为循环队列 SQ 的存储空间,front 为队头指针,rear 为队尾指针,则执行出队操作的语句为()front=front+1 front=(front+1)%mrear=(rear+1)%m front=(front+1)%(m+1)12.在按层次遍历二叉树的算法中,需要借助的辅助数据结构是(A)A队列 B栈C线性表 D有序表13.用邻接表表示图进行深度优先遍历时,通常是采用 C来实现算法的。A 树 B.队列
14、C.栈 D.图17.简述以下算法的功能(栈和队列的元素类型均为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 章 串知识点:定义、串的基本操作、根据KMP 算法原理,分别求出它们的Next 函数值作业1.串是任意有限个()符号构成的序列符号构成的集合字符构成的序列字符构成的集合2、设有两个串 p 和 q
15、,求 q 在 p 中首次出现的位置的运算称作:()连接模式匹配求子串求串长3、串是一种特殊的线性表,其特殊性体现在:()可以顺序存储数据元素是一个字符可以链式存储数据元素可以是多个字符5、设 S=“A;/document/”,则 strlen(s)=20。6.设目标 T=”abccdcdccbaa”,模式P=“cdcc”,则第6次匹配成功。7.设串 s1=ABCDEFG,s2=PQRST,函数 con(x,y)返回 x 和 y 串的连接串,subs(s,i,j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2),subs(s1,
16、len(s2),2)的结果串是BCDEFEF。8.设串 sl=Data Structures with Java,s2=it,则子串定位函数 index(s1,s2)的值为(D)A 15 B 16 C 17 D 189.令 t=abcaabcab,根据 KMP 算法原理,分别求出它们的Next 函数值。i串 tNext(i)1a2b3c4a5a6b7c8a9b第 5 章 数组和广义表知识点:二维数组的存储、特殊矩阵、广义表作业 P31-331.假设有二维数组 A68,每个元素用相邻的6 个字节存储,存储器按字节编址。已知 A 的起始存储位置(基地址)为 1000,则数组 A 的体积(存储量)为
17、288;末尾元素 A57的第一个字节地址为1282;若按行存储时,元素 A14的第一个字节地址为1072;若按列存储时,元素 A47的第一个字节地址为1276。()2.假设有 60 行 70 列的二维数组 a160,170以列序为主序顺序存储,其基地址为 1000,每个元素占 2 个存储单元,那么第 32 行第 58 列的元素 a32,58的存储地址为()。(无第 0 行第 0 列元素)()4454 ()6904 ()7902 ()答案 A,B,C 均不对3数组 A 的每个元素占 5 个单元,将其按行优先次序存储在起始地址为 1000的连续的内存单元中,则元素A,的地址为(A )A.1140
18、C.1120B.1145D.11254.二维数组 A15 20采用按行为主序的存储方式,每个元素占4 个存储单元,若A00的存储地址为 300,则 A10 10的地址为(D)5写出广义表操作的结果:GetTail【GetHead【GetTail【(a,b),(x,y)】=(y)。5.取出广义表 A=(x,(a,b,c,d)中原子 x 的函数是_ head(A)_。7.下列各三元组表分别表示一个稀疏矩阵,试写出它们的稀疏矩阵。i7j6v61234674152537897318、设有一个10 阶的对称矩阵 A1010,采用压缩存储方式按行将矩阵中下三角部分的元素存入一维数组 B 中,A00存入 B
19、0中,则 A85在 B 中(C)位置。A32 B33 C41 D659、假设有 100 行 200 列的二维数组 a100200以列序为主序顺序存储,其基地址为 10000,每个元素占 2 个存储单元,那么第 45 行第 67 列的元素 a4466的存储地址为23288。10、已知广义表 L=(a),b),(),d),(e,f),(1)写出广义表 L 的头、尾;(2)计算 L 的深度;(3)画出 L 的头尾链表存储结构图。11.设矩阵 A 是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一维数组 B 中(注:B 下标从 0 开始),求矩阵中任一元素ai,j(ij)和一维数
20、组 B中下标 k 的对应关系。解:对应关系如下:a1,1a2,1A an,1a2,2an,2an,n i(i 1)j 12k j(j 1)i 12n i j 11 i j n第 6 章二叉树知识点:树、二叉树(完全二叉树)、森林基本概念(度、),存储结构,遍历,转换,线索1、设F 是一个森林,B 是由 F 转换得到的二叉树,F 中有 n 个非叶结点,则 B 中右指针域为空的结点有(C)个。An-1 Bn Cn+1 Dn+22已知一棵度为 3 的树有 2 个度为 1 的结点,3 个度为 2 的结点,4 个度为 3 的结点,则该树中有_12_ 个叶子的结点。3树有三种常用的存储结构,即孩子链表法、
21、孩子兄弟链表法和_双亲表示法。4.把一棵树转换为二叉树后,这棵二叉树的形态是 A。A.唯一的 B.有多种C.有多种,但根结点都没有左孩子 D.有多种,但根结点都没有右孩子5、若一棵二叉树中度为2 的结点数是 10,则叶子结点数为 11个。10、3 个结点可构成 2 棵不同形态的树。5 棵不同形态的二叉树。6.深度为 6(根的层次为 1)的二叉树至多有()结点。7.将含 100 个结点的完全二叉树从根这一层开始,每层上从左到右依次对结点编号,根结点的编号为 1。编号为 49 的结点 X 的双亲编号为()242523无法确定8.设一棵完全二叉树具有1000 个结点,则此完全二叉树有 500个叶子结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题
限制150内