2022年数据结构单元题 .pdf

上传人:Q****o 文档编号:28418251 上传时间:2022-07-28 格式:PDF 页数:8 大小:79.72KB
返回 下载 相关 举报
2022年数据结构单元题 .pdf_第1页
第1页 / 共8页
2022年数据结构单元题 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年数据结构单元题 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构单元题 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据结构第1 教学单元测试练习题选择1、通常从正确性、易读性、健壮性、高效性等四个方面评价算法(包括程序 )的质量。以下解释错误的是 ( ) A、正确性算法应能正确地实现预定的功能(即处理要求 ) B、易读性算法应易于阅读和理解以便于调试修改和扩充C、健壮性当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果D、高效性即达到所需要的时间性能B2、以下说法正确的是( ) A、数据元素是数据的最小单位B、数据项是数据的基本单位C、数据结构是带有结构的各数据项的集合D、数据结构是带有结构的数据元素的集合3、对于顺序表,以下说法错误的是()A、顺序表是用一维数组实现的线性表,数组

2、的下标可以看成是元素的绝对地址B、顺序表的所有存储结点按相应数据元素间的逻辑关系决定的次序依次排列C、顺序表的特点是:逻辑结构中相邻的结点在存储结构中仍相邻D、顺序表的特点是:逻辑上相邻的元素,存储在物理位置也相邻的单元中数组的下标可以看成是元素的相对地址B4、对顺序表上的插入、删除算法的时间复杂性分析来说,通常以()为标准操作A、条件判断B、结点移动C、算术表达式D、赋值语句B5、对于顺序表的优缺点,以下说法错误的是()A、无需为表示结点间的逻辑关系而增加额外的存储空间B、可以方便地随机存取表中的任一结点C、插入和删除运算较方便D、容易造成一部分空间长期闲置而得不到充分利用C6、链表不具有的

3、特点是:A、可随机访问任一个元素B、插入删除不需要移动元素C、不必事先估计存储空间D、所需空间与线性表长度成正比C7、若线性表最常用的操作是存取第i 个元素及其前驱的值,则采用()存储方式节省时间A、单链表B、双向链表C、单循环链表D、顺序表顺序表可以随机存取8、设指针P指向双链表的某一结点,则双链表结构的对称性可用()式来刻画A、p-prior-next-=p-next-next B、p-prior-prior-=p-next-prior C、p-prior-next-=p-next-prior D、p-next-next=p-prior-prior 9、以下说错误的是()A、对循环来说,从

4、表中任一结点出发都能通过前后操作而扫描整个循环链表B、对单链表来说,只有从头结点开始才能扫描表中全部结点C、双链表的特点是找结点的前趋和后继都很容易D、对双链表来说,结点 *P 的存储位置既存放在其前趋结点的后继指针域中,也存放在它的后继结点的前趋指针域中。10、在带头结点的循环链表中,将头指针改设为尾指针(rear)后,其头结点和尾结点的存储名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 位置分别是 ( ) A、rear 和

5、rear-next-next B、rear-next 和 rear C、rear-next-next 和 rear D、rear 和 rear-next 11.以下说错误的是( ) A、对于线性表来说,查找定位运算在顺序表和单链表上的量级均为O(n)B、读表元运算在顺序表上只需常数时间O(1)便可实现,因此顺序表是一种随机存取结构C、在链表上实现读表元运算的平均时间复杂性为O(1)D、插入、删除操作在链表上的实现可在O(n)时间内完成12、循环链表主要优点是()A、不再需要头指针了B、已知某个结点的位置后,能够容易找到它的直接前趋C、从表中任一结点出发都能扫描到整个链表D、在进行插入、删除运算

6、时,能更好地保证链表不断开13、以下说法错误的是()A、数据的物理结构是指数据在计算机内实际的存储形式B、算法和程序没有区别,所以在数据结构中二者是通用的C、对链表进行插人和删除操作时,不必移动结点D、双链表中至多只有一个结点的后继指针为空14、以下说法正确的是A、线性结构的基本特征是:每个结点有且仅有一个直接前趋和一个直接后继B、线性表的各种基本运算在顺序存储结构上的实现均比在链式存储结构上的实现效率要低C、在线性表的顺序存储结构中,插入和删除元素时,移动元素的个数与该元素位置有关D、顺序存储的线性表的插入和删除操作不需要付出很大的代价,因为平均每次操作只有近一半的元素需要移动15、以下说法

7、错误的是()A、求表长、定位这二种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低B、顺序存储的线性表可以随机存取C、由于顺序存储要求连续约存储区域所以在存储管理上不够灵活D、线性表的链式存储结构优于顺序存储结构16、以下说法错误的是()A、线性表的元素可以是各种各样的,逻辑上相邻的元素在物理位置上不一定相邻B、在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上不一定相邻C、在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻D、线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素17、以下说法正确的是()A、在单链表中,任何两个元素的存

8、储位置之间都有固定的联系,因为可以从头结点进行查找任何一个元素B、在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构C、顺序存储方式只能用于存储线性结构D、顺序存储方式的优点是存储密度大、且插入、删除运算效率高A18、线性表L=(a1,a2,.,ai,.,an),下列说法正确的是( ) A、每个元素都有一个直接前驱和直接后继名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - B、线性表中至少要有一

9、个元素C、表中诸元素的排列顺序必须是由小到大或由大到小的D、除第一个元素和最后一个元素外其余每个元素都有一个数且仅有一个直接前驱和直接后继A19、线性表若采用链表存储结构时,要求内存中可用存储单元的地址( ) A、必需是联系的B、部分地址必须是连续的C、一定是不连续的D、连续不连续都可以20.设 REAR是指向非空带头结点的循环单链表的尾指针,则删除表首结点的操作可表示为( ) A、p=rear;rear=rear-next;free(p) B、rear=rear-next;free(rear); C、rear=rear-next-next;free(rear); D、p=rear-next-

10、next;rear-next-next=p-next;free(p); C21、单链表中,增加头结点的目的是为了( ) A、使单链表至少有一个结点B、标示表结点中首结点的位置C、方便运算的实现D、说明单链表是线性表的链式存储实现22、带头结点的单链表Head 为空的判定条件是A、Head=Null B、Head-next=NULL C、Head-next=Head 23、空的单循环链表L的尾结点 *P,满足A、P-next=NULL B、P=NULL C、 P-next=L D、P=L 24、算法的时间复杂度是指()A、执行算法程序所需要的时间B、算法执行过程中所需要的基本运算次数C、算法程序

11、的长度D、算法程序中的指令条数25、算法的空间复杂度是指()A、执行算法程序所占的存储空间B、算法程序中的指令条数C、算法程序的长度D、算法执行过程中所需要的存储空间26、下列叙述中正确的是()A、线性表是线性结构B、栈和队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构C27、数据的存储结构是指()A、数据所占的存储空间量B、数据的逻辑结构在计算机中的表示C、数据在计算机中的顺序存储方式D、存储在外存中的数据28、下列属于线性数据结构的是( ) A、队列B、树C、图D、不确定A29、单链表的每个结点中包括一个指针next,它指向该结点的后继结点。现要将指针q 指向的新结点插入到指针

12、P指向的单链表结点之后,下面的操作序列中哪一个是正确的?( ) A、P-next = q-next; q = p-next; B、P-next = q; q-next = p-next; C、q-next = p-next; p-next=q; D、q = p-next; p-next = q-next; C30、在一个单链表中,若删除p 所指结点的后续结点,则执行( ) A、p-next=p-next-next; B、p=p-next; p-next=p-next-next; C、p-next=p-next; D、p=p-next-next; 31、循环链表指 ( ) A、最后一个节点的指针

13、域总是指向链表头B、可以自由膨胀的链表C、链表含有指向上一级节点的指针域D、都不是32、循环队列的出队操作为( ) A、sq.front=(sq.ftont+1)% maxsize B、sq.front=sq.front+1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - C、sq.rear=(sq.rear+)% maxsize D、sq.rear=sq.rear+1 B33、循环队列的队满条件为( ) A、(sq.rear+

14、1) % mazsize =(sq.front+1) % maxsize; B、(sq.rear+1 % maxsize =sq.front+1 C、sq.(rear+1) % maxsize =sq.front D、sq.rear =sq.front 34、循环队列的队空条件为( ) A、(sq.rear+1) % maxsize =(sq.front+1) % maxsize B、(sq.rear+) % maxsize =sq.front+1 C、(sp.rear+1) % maxsize =sq.front D、sq.rear = sq.front 35、如果以链表作为栈的存储结构,则

15、退栈操作时( ) A、必须判别栈是否满B、判别栈元素的类型C、必须判别栈是否空D、队栈不做任何判别B36、设有一顺序栈S,元素 s1,s2,s3,s4,s5,s6依次进栈, 如果 6 个元素出线的顺序是s2,s3,s4, s6 , s5,s1,则栈的容量至少应该是()A、2 B、3 C、5 D、 6 37、设有一顺序栈已含3 个元素,如下图所示,元素a4 正等待进栈。那么下列4 个序列中不可能出现的出栈序列是()A、a3,a1,a4,a2 B、a3,a2,a4,a1 C、 a3,a4,a2,a1 D、a4,a3,a2,a1 38、在一个链队中,若f,r 分别为队首、队尾指针,则插入s所指结点的

16、操作为()A、f-next=c;f=s B、r-next=s;r=s C、s-next=r;r=s D、s-next=f;f=s 39、链栈与顺序栈相比,有一个比较明显的优点即()A、插入操作更方便B、通常不会出现栈满的情况C、不会出现栈空的情况D、删除操作更方便A40、一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是()A、e d c b a B、d e c b a C、d c e a b D、a b c d e 41、一个队列的入队列顺序是1,2,3,4,则队列的输出系列是()A、4,3, 2,1 B、1,2,3,4 C、1,4,3,2 D、3,2,4,1 42、设计一个判别

17、表达式中左、右括号是否配对出线的算法,采用()数据结构最佳。A、线性标的顺序存储结构B、栈C、队列D、线性表的链式存储结构43、设循环队列中数组的下标范围是0n-1,其头尾指针分别为f 和 r,则其元素的个数为()A、r-f B、r-f +1 C、 (r-f)%n+1 D、 (r-f+n) %n B44、若一个栈的输入序列是1、2,N,输出序列的第一个元素是N,则第I 个输出元素为()A、N-I B、 I C、N-I+1 D、N-I-1 45、队列操作的原则是()A、先进先出B、后进先出C、只能进行插入D、只能进行删除46、线性表是 ( ) 。A、一个有限序列,可以为空;B、一个有限序列,不能

18、为空;C、一个无限序列,可以为空;D、一个无序序列,不能为空。二、填空题名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 47、下面程序段的时间复杂度是_ O(n*m)_ for(i=0;in;i+) for(j=0;jm;j+) Arrayij=0; 48、下面程序段的时间复杂度是_死循环_ i=0; while(i=n) i=i*3; 49、在下面程序段中,s=s+p 语句的执行次数为n , p*=j语句的执行次数为n(n+1

19、)/2 ,该程序段的时间复杂度为O(n2) 。int i=0,s=0; while (+i=n) int p=1; for (int j=1;jnext!=NULL) _p=p-next_; j+; return(j); /* 回传表长 */ 51、以下为单链表的定位运算,分析算法,请在_处填上正确的语句。int locate_lklist(lklist head,datatype x) /* 求表 head 中第一个值等于x 的结点的序号。不存在这种结点时结果为0*/ p=head;j=0; while(_p-next!=NULL & p-data!=x _) p=p-next;j+; if

20、 ( p-data=x ) return( j ); else return(0); 52、以下为单链表按序号查找的运算,分析算法,请在_处填上正确的语句。Pointer find_lklist(lklist head,int i) p=head;j=0; while(_p-next!=NULL & jnext; j+; if(i=j) return(p); else return(NULL); 53、以下为单链表的删除运算,分析算法,请在_处填上正确的语句。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -

21、- - - - - 第 5 页,共 8 页 - - - - - - - - - void delete_lklist(lklist head,int i) p=find_lklist(head,i-1); /* find_lklist见 73 题 */ if(_p-next!=NULL_) q=_p-next_; p-next=q-next; free(q); else error(“不存在第i 个结点” ) 54、以下为单链表的插入运算,分析算法,请在_处填上正确的语句。void insert_lklist(lklist head,datatype x,int i) /* 在表 head 的

22、第 I 个位置上插入一个以x 为值的新结点 */ p=find_lklist(head,i-1); /* find_lklist见 73 题 */ if(p=NULL)error(“不存在第i 个位置” );else s=_ malloc(size)_;s-data=x; s-next=_p-next_; p-next=s; 55、以下为单链表的建表算法,分析算法,请在_处填上正确的语句。lklist create_lklist() /* 直接实现的建表算法。*/ head=malloc(size); p=head; scanf(“ %f” ,&x);while(x!= $) q=malloc

23、(size); q-data=x; p-next=q; _ p=q _; scanf(“ %f” ,&x); _q-next=NULL_; return(head); 56、循环链表与单链表的区别仅仅在于其尾结点的链域值不是_空( NULL)_,而是一个指向 _头指针 _的指针。57、在单链表中若在每个结点中增加一个指针域,所含指针指向前驱结点,这样构成的链表中有两个方向不同的链,称为_双向链表 _。58、一个好的算法应当具有下列好的特性:正确性、(可读性)、 (健壮性)和效率和低存储需求。59、采用顺序存储结构的线性表,其每个元素占用个单元。第一个元素的地址为,则第名师资料总结 - - -精

24、品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - i 个元素的存储位置为(N+(i-1)*L ) 。60、数据元素之间的关系在计算机中的表示有两种不同的表示方法,即(顺序映像)和(非顺序映像),从而得到两种不同的存储结构(顺序存储结构)和(链式存储结构)。61、带头结点的单链表H 为空的条件是 _H-next=NULL_。不带头结点的单链表H 为空的条件是H=NULL 62、非空单循环链表L中*p 是尾结点的条件是_p-next=L_。63、 在一个单链表

25、中p 所指结点之后插入一个由指针s 所指结点,应执行 s-next=_p-next_;和 p-next=_s_的操作。64、在一个单链表中p 所指结点之前插入一个由指针s 所指结点,可依次执行以下操作:s-next=_ p-next _; p-next=s; t=p-data; p-data=_s-data_; s-data=_t_; 65、中缀表达式3*(x+2)-5 所对应的后缀表达式是3x2+*5- ;后缀表达式“45*32+-”的值为15 。三、判断题AB66、在顺序表中取出第i 个元素所花费的时间与i 成正比(X )67、线性表的长度是线性表所占用的存储空间的大小(X )C68、在对

26、链队列作出队列操作,不会改变front 指针的值(X )69、已知指针P指向链表L 中某结点,执行语句P=P-next不会删除该链表中结点()70、在链队列中,即便不设置尾指针也能进行入队列操作()B71、栈和队列都是运算受限的线性表()72、在带头结点的单循环链表中,任一结点的后继指针均不空()C73、 线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(N),因而两种存储方式的插入、删除运算所花费的时间相同(X )四、算法设计带头结点的单链表,其长度存放在头结点的数据域中,设计一算法求倒数第k 个结点的值,并且删除该结点。要求:(1)用类 C语言描述该单链表(3)写出

27、解决该问题的类C语言算法过程类型定义略算法思路:合法性检查,若不合法,返回error 若合法: 2)遍历链表查找倒数第k 个结点的前驱结点将倒数第k 个结点值保存将倒数第k 个结点删除Status del_find(LinkList L,int k,int&e) / 删除倒数第k 个结点,并将该结点的值送到e 中返回 if(kL-data) return error; i=L-data-k+1;/i 为倒数第 k 个结点的编号p=L;j=0; while(jnext;/ 查找第 i-1 个结点/ 注意循环条件中没有p-next 不为空的条件,原因是不会越界,因为前面已经判断过了. q=p-next; e=q-data; p-next=q-next; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - free(q); return ok; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁