2022年《数据结构》习题集 .pdf
《2022年《数据结构》习题集 .pdf》由会员分享,可在线阅读,更多相关《2022年《数据结构》习题集 .pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 绪论一、选择题:1、下列算法的时间复杂度是()for(i=0;i n;i+ +) ci=i ;AO(1)BO(n)CO( log2n)DO(nlog2n)2、数据在计算机存储器内表示时,根据结点的关键字直接计算出该结点的存储地址,这种方法称为()A索引存储方法B顺序存储方法C链式存储方法D散列存储方法解析:数据结构在计算机中的表示(映像)称为数据的物理(存储)结构。它包括数据元素的表示和关系的表示。数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间
2、的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。链式存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。 索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。 散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。数据结构中,逻辑上(逻辑结构:数据元素之间的逻辑关系)可以把数据结构分成线性结构和非线性结构。线性结构的顺序存储结构是一
3、种随机存取的存储结构,线性表的链式存储结构是一种顺序存取的存储结构。线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。逻辑结构与数据元素本身的形式、内容、相对位置、所含结点个数都无关。3、以下哪一个术语与数据的存储结构无关?() 。A . 顺序表B. 链表C. 散列表D. 队列4、算法在发生非法操作时可以做出处理的特性称为() 。A正确性B易读性C健壮性D高效性5、逻辑结构是指数据元素的() 。A关联方式B存储方式C结构D数据项6、研究数据结构就是研究() 。A数据的逻辑结构B数据的存储结构C数据的逻辑结构和存储结构D数据的逻辑结构、存储结构及其数据的运算7、从逻辑上可以把数
4、据结构分为() 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 30 页 - - - - - - - - - 1 A . 动态结构和静态结构B. 紧凑结构和非紧凑结构C. 线性结构和非线性结构D. 内部结构和外部结构8、以下有关数据的叙述中错误的是() 。A计算机能够处理的数据包括整数、实数、字符、声音、图像等B数据的逻辑结构是从逻辑关系上描述数据,它取决于数据的存储方式C数据存储结构的实现依赖于计算机语言D数据的运算是定义在数据的逻辑结构上的9、数据的基本单位是()
5、。A . 数据结构B. 数据元素C. 数据项D. 文件10、下列算法的时间复杂度是()for(i=0;i m;i+ +) for(j=0;j n;j+ +) aij=i*j;AO(m2)BO(n2)CO(mn)DO( m+n)11、算法分析的两个主要方面是() 。A正确性和简明性B数据复杂性和程序复杂性C可读性和可维护性D时间复杂性和空间复杂性二、填空题:1、数据结构是相互之间存在一种或多种特定关系的数据元素的集合,它包括三方面的内容,分别是数据的逻辑结构、()和() 。2、数据的逻辑结构是从逻辑关系上描述数据,它与数据的()无关,是独立于计算机的。3、( )结构与数据元素本身的内容和形式无关
6、。4、程序段“ for(i=1;i=n;i+) k+; for(j=1;j=n;j+) x=x+k;”的时间复杂度为( )。5、数据的存储结构(物理结构)可以用() 、 () 、 ()及散列存储等四种存储方法表示。三、判断题:1、顺序存储方式优点是存储密度大,且插入和删除运算效率高。()2、顺序存储结构属于静态存储结构,链式存储结构属于动态存储结构。()3、线性表的链接存储,表中元素的逻辑顺序与物理顺序一定相同。()4、数据的机内表示称为数据的存储结构。()5、在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。()6、数据元素是数据的最小单位。()7、基于某种逻辑结构之上
7、的运算,其实现是惟一的。()参考答案(绪论)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 30 页 - - - - - - - - - 2 一、选择题1 2 3 4 5 6 7 8 9 10 11 B D D C A D C B A C D 二、填空题1、数据结构是相互之间存在一种或多种特定关系的数据元素的集合,它包括三方面的内容,分别是数据的逻辑结构、(存储结构 )和( 运算 ) 。2、数据的逻辑结构是从逻辑关系上描述数据,它与数据的()无关,是独立于计算机的。3、(
8、逻辑 )结构与数据元素本身的内容和形式无关。4、程序段“ for(i=1;i=n;i+) k+; for(j=1;jnext=P-next;P-next=S BP-next=S-next;S-next=P ;CP-next=P;P-next=S ;DP-next=S;S-next=P ;3、在已知头指针的单链表中,要在其尾部插入一新结点,其算法所需的时间复杂度为()A( 1)B( log2n)CO(n)DO(n2)解析: 单就插入运算而言,算法时间复杂度为(1) ,但要将指针定位到链表末尾,指针移动的时间复杂度为O( n) ;名师资料总结 - - -精品资料欢迎下载 - - - - - - -
9、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 30 页 - - - - - - - - - 3 4、对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为()A顺序表B用头指针表示的单循环链表C用尾指针表示的单循环链表D单链表解析: 尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear-next-next 和 rear, 查找时间都是O(1) 。若用头指针来表示该链表,则查找终端结点的时间为O(n) 。
10、5、线性表是()A一个有限序列,可以为空B一个有限序列,不能为空C一个无限序列,可以为空D一个无限序列,不能为空6、在 n 个结点的双链表的某个结点前插入一个结点的时间复杂度是()AO(n)BO(1)CO(log2n)DO(n2)7、线性表采用链式存储时,结点的地址()A必须是连续的B必须是不连续的C连续与否均可D必须有相等的间隔8、在单链表中,增加头结点的目的是()A使单链表至少有一结点B标志表中首结点位置C方便运算的实现D说明单链表是线性表的链式存储实现9、带头结点的单链表head为空的判定条件是()Ahead = NULL ;Bhead - next = NULL ;Chead - ne
11、xt = head;Dhead ! = NULL ;10、在一个具有n 个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度为()A( 1)B( n)C( n2)D( log2n)11、下列有关线性表的叙述中,正确的是()A线性表中的元素之间是线性关系B线性表中至少有一个元素C线性表中任何一个元素有且仅有一个直接前趋D线性表中任何一个元素有且仅有一个直接后继12、在单链表中,存储每个结点需有两个域,一个是数据域,另一个是指针域,它指向该结点的()A直接前趋B直接后继C开始结点D终端结点13、将两个各有n 个元素的有序表归并成一个有序表,其最少的比较次数是() 。An B.2n-1 C.2n
12、 D.n-1 14、链表不具有的特点是() 。A随机访问B不必事先估计存储空间C插入删除时不需移动元素D所需的空间与线性表成正比15、在一个单链表中,已知q 所指结点是p 所指结点的直接前趋,若在p,q 之间插入s结点,则执行的操作是() 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 30 页 - - - - - - - - - 4 As-next=p-next;p-next=s; B q-next=s;s-next=p; Cp-next=s-next;s-next=
13、p; D p-next=s;s-next=q; 16、链表具有的特点是() 。A可随机访问任一元素B插入、删除需要移动元素C不必事先估计存储空间D存储空间是静态分配的17、一个顺序表一旦说明,其中可用空间大小()A已固定B可以改变C不能固定D动态变化18、 若某线性表中最常用的操作是取第i 个元素和找第i 个元素的前趋元素, 则采用()存储方式最节省时间。A 顺序表B单链表C双向链表D单循环链表19、两个指针P 和 Q,分别指向单链表的两个元素,P所指元素是Q 所指元素的前驱的条件是() 。AP-next=Q BQ-next=P CP=Q DP-next=Q-next 20、链表不具有的特点是
14、() 。A可随机访问任一元素B插入、删除不需要移动元素C不必事先估计存储空间D所需空间与线性表长度成正比21、下面关于线性表的叙述中,错误的是() 。A线性表采用顺序存储,必须占用一片连续的存储单元B线性表采用顺序存储,便于进行插入和删除操作C线性表采用链接存储,不必占用一片连续的存储单元D线性表采用链接存储,便于进行插入和删除操作22、在 n 个结点的顺序表中,算法的时间复杂度是O(1)的操作是() 。A访问第 i 个结点( 1i n)和求第i 个结点的直接前趋(2i n)B在第 i 个结点后插入一个新结点(1i n)C删除第i 个结点( 1i n)D将 n 个结点从小到大排序23、在一个单
15、链表中,若删除p 指向结点的后继结点,则执行的操作为() 。Aq=p-next;p-next=p-next-next;free(q); Bp=p-next;q=p-next;p=q-next;free(q); Cq=p-next-next;p=p-next;free(q); Dp=p-next-next;q=p-next;free(q); 二、填空题:1、在双链表中要删除已知结点*p,其时间复杂度为() 。2、在仅有尾指针R 指示的单循环链表R 中,在表尾插入一个结点S 的语句序列是() 。3、在带头结点的双链表中,指针所指结点是开始结点的条件是() 。4、在具有n 个结点的双链表中做插入、删
16、除运算,平均时间复杂度为() 。5、在一个长度为n 的顺序表中第i 个元素( 1 i n)之前插入一个元素时,需向后名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 30 页 - - - - - - - - - 5 移动()个元素。6、在双循环链表中,若要在指针p 所指结点之前插入指针s 所指的结点,则需执行下列语句: s-prior=p-prior;p-prior-next=s;( )和 p-prior=s;。7、已知指针p 指向双向链表中的一个结点(非首结点、非尾结点)
17、,则将结点s 插入在 p结点的直接后继位置的语句是() s-prior=p; s-next-prior=s; p-next=s; 8、已知带表头结点的单链表L,指针 p 指向 L 链表中的一个结点(非首结点、 非尾结点),则删除结点p的直接后继结点的语句是() ;删除首结点的语句是() 。三、判断题1、在有序的顺序表和有序的链表上,均可以使用折半查找法来提高查找速度。()2、顺序存储的线性表可以随机存取。()3、线性表采用顺序存储,必须占用一片连续的存储单元。()四、程序设计题数据结构的数据类型定义如下:顺序存储:typedef struct int *base; int length; in
18、t listsize; sqlist; 链式存储:typedef struct LinkList int data; struct LinkList *next; Node,*LinkList; 1、已知带头结点的单链表head 中的结点是按整数值递增排序的,写一算法将值为x 的结点插入到表head 中,使 head 仍然有序。2、用尾插法建立带头结点的单链表。3、用头插法建立带头结点的单链表。4、对给定的单链表L,编写一个删除L 中值为 x 的结点的直接前趋结点算法。5、用 顺序 存储结 构实现线性表的就地逆置算法,即将(a1,a2, ai,an)逆置为(an,ai,a2,a1); 6、用
19、链式 存储结构实现线性表的就地逆置算法,即将(a1,a2, ai,an)逆置为(an,ai,a2,a1); 7、使用顺序存储结构分别实现A=A B 和 A=A B 运算;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 30 页 - - - - - - - - - 6 参考答案(线性表)一、选择题1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 B A B C A B C C B B A B B A B
20、C B A A A B A A 二、填空题1、在双链表中要删除已知结点*p,其时间复杂度为(O(1)) 。2、在仅有尾指针R 指示的单循环链表R 中,在表尾插入一个结点S 的语句序列是(P=R; while(P-next!=NULL) P=P-next; P-next=S; S-next=NULL;) 。3、在带头结点的双链表中,指针所指结点是开始结点的条件是(P= =L ) 。4、在具有n 个结点的双链表中做插入、删除运算,平均时间复杂度为(O(1)) 。5、在一个长度为n 的顺序表中第i 个元素( 1 i n)之前插入一个元素时,需向后移动( n-i+1)个元素。6、在双循环链表中,若要在
21、指针p 所指结点之前插入指针s 所指的结点,则需执行下列语句: s-prior=p-prior;p-prior-next=s;( s-next=p; ) 和 p-prior=s;。7、已知指针p 指向双向链表中的一个结点(非首结点、非尾结点),则将结点s 插入在 p结点的直接后继位置的语句是(p-next=s;) s-prior=p; s-next-prior=s; p-next=s; 8、已知带表头结点的单链表L,指针 p 指向 L 链表中的一个结点(非首结点、 非尾结点),则删除结点p 的直接后继结点的语句是(q=p-next; p-next=q-next; free(q);) ;删除首结
22、点的语句是(q=L-next; L=L-next; free(q);) 。三、判断题1、在有序的顺序表和有序的链表上,均可以使用折半查找法来提高查找速度。()2、顺序存储的线性表可以随机存取。()3、线性表采用顺序存储,必须占用一片连续的存储单元。()四、程序设计题1、已知带头结点的单链表head 中的结点是按整数值递增排序的,写一算法将值为x 的结点插入到表head 中,使 head 仍然有序。P=head-next; While(p-next!=NULL&p-datanext;/指针定位p-next=x; x-next=p-next; 2、用尾插入法建立带头结点的单链表。请参考教材“数据结
23、构-清华大学严尉敏著评p29-p30”; 3、用头插入法建立带头结点的单链表。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 30 页 - - - - - - - - - 7 请参考教材“数据结构-清华大学严尉敏著评p29-p30”; 4、对给定的单链表L,编写一个删除L 中值为 x 的结点的直接前趋结点算法。/算法思路:先判断L 中是否存在值为x 的结点,若不存在,返回错误(-1) ;若存在,用一指针 p定位到值为x 的第一结点 ,用另一个指针q定位到值为x的第一结点的
24、前驱结点,然后实施删除操作;重点语句为:p=L-next;/p 指向第一个结点whili(p-data!=x&p-next!=NULL) p=p-next; if(p= =NULL) ruturn error;/不存在else p=L-next; while(p-next-next-data!=x) p=p-next; q=p-next; p-next=p-next-next; free(q); 5、用 顺序 存储结 构实现线性表的就地逆置算法,即将(a1,a2, ai,an)逆置为(an,ai,a2,a1); 重点语句:for(i=0;irear=(qrear+1)%maxsize; 20、
25、栈和队列都是() 。A限制存取点的线性结构B限制存取点的非线性结构C顺序存储的线性结构D链式存储的线性结构21、实现递归调用属于()的应用。A队列B栈C 数组D树二、填空题:1、循环队列用数组datam存放其元素值,已知其头、尾指针分别是front 和 rear,则当前队列中元素的个数是() 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 30 页 - - - - - - - - - 11 2、栈顶的位置是随着()操作而变化的。3、假设以S 和 X 分别表示进栈和退栈
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 2022年数据结构习题集 2022 习题集
限制150内