数据结构与算法习题.docx
- 文档编号:28215185
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:45
- 大小:80.68KB
数据结构与算法习题.docx
《数据结构与算法习题.docx》由会员分享,可在线阅读,更多相关《数据结构与算法习题.docx(45页珍藏版)》请在冰豆网上搜索。
数据结构与算法习题
习题1
一、选择题
1.数据结构通常是研究数据的()及它们之间的相互联系。
A.存储结构和逻辑结构B.存储和抽象
C.联系和抽象D.联系与逻辑
2.从逻辑上可以把数据结构分为()两大类。
A.动态结构、静态结构B.顺序结构、链式结构
C.线性结构、非线性结构D.初等结构、构造型结构
3.数据处理的基本单位是()。
A.数据元素B.数据项
C.数据类型D.数据变量
4.数据结构中线性结构中元素对应关系为()。
A.一对一B.一对多
C.多对多D.无关系
5.数据结构中树形结构中元素对应关系为()。
A.一对一B.一对多
C.多对多D.无关系
6.数据结构中图形结构中元素对应关系为()。
A.一对一B.一对多
C.多对多D.无关系
7.数据在计算机存储器内表示时,物理地址和逻辑地址相同并且是连续的,称为()。
A.存储结构B.逻辑结构
C.顺序存储结构D.链式存储结构
8.非线性结构中的每个结点()。
A.无直接前趋结点B.无直接后继结点
C.只有一个直接前趋结点和一个直接后继结点
D.可能有多个直接前趋结点和多个直接后继结点
9.链式存储的存储结构所占存储空间()。
A.分两部分,一部分存放结点的值,另一部分存放表示结点间关系的指针
B.只有一部分,存放结点的值
C.只有一部分,存储表示结点间关系的指针
D.分两部分,一部分存放结点的值,另一部分存放结点所占单元素
10.算法分析的两个主要方面是()。
A.正确性和简单性B.可读性和文档性
C.数据复杂性和程序复杂性D.时间复杂度和空间复杂度
11.算法的计算量大小称为算法的()。
A.现实性B.难度C.时间复杂性D.效率
12.数据的基本单位是()。
A.数据结构B.数据元素C.数据项D.文件
13.每个结点只含有一个数据元素,所有存储结点相继存放在一个连续的存储区里,这种存储结构称为()结构。
A.顺序存储B.链式存储
C.索引存储D.散列存储
14.每一个存储结点不仅含有一个数据元素,还包含一组指针,该存储方式是()存储方式。
A.顺序B.链式C.索引D.散列
15.以下任何两个结点之间都没有逻辑关系的是()。
A.图形结构B.线性结构C.树形结构D.集合
16.在数据结构中,与所使用的计算机无关的是()。
A.物理结构B.存储结构
C.逻辑结构D.逻辑和存储结构
17.下列四种基本逻辑结构中,数据元素之间关系最弱的是()。
A.集合B.线性结构C.树形结构D.图形结构
18.与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。
A.逻辑结构B.存储结构C.逻辑实现D.存储实现
19.每一个存储结点只含有一个数据元素,存储结点存放在连续的存储空间,另外有一组指明结点存储位置的表,该存储方式是()存储方式。
A.顺序B.链式C.索引D.散列
20.算法能正确的实现预定功能的特性称为算法的()。
A.正确性B.易读性C.健壮性D.高效性
21.算法在发生非法操作时可以做出处理的特性称为算法的()。
A.正确性B.易读性C.健壮性D.高效性
22.下列时间复杂度中最坏的是()。
A.O
(1)B.O(n)C.O(log2n)D.O(n2)
23.在下面的程序段中,对x的赋值语句的频度为()。
for(i=1;i for(j=1;j x++; A.O(2n)B.O(n)C.O(n2)D.O(log2n) 二、填空题 1.常见的数据结构有集合、线性结构、结构、结构。 2.算法的5个重要特性是有穷性、、可行性、输入、。 3.评价算法的优劣通常主要考虑算法的和这两方面。 4.线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。 5.数据的存储结构又叫。 6.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的的有限集合。 7.算法的空间复杂度是指该算法所耗费的,它是该算法求解问题规模n的函数。 8.算法是一个的集合,算法效率的度量可以分为和。 9.若一个算法中的语句频度之和为T(n)=7n+4n2,则算法的时间复杂度为。 10.设有一组数据元素需存储,为了方便查找某元素,数据宜采用存储结构;为了方便插入与删除某元素,数据宜采用存储结构。 三、判断题 1.数据的逻辑结构与数据元素本身的内容和形式无关。 () 2.一个数据结构是由一个逻辑结构和这个逻辑结构上一个基本运算集构成的整体。 () 3.数据元素是数据的最小单位。 () 4.数据的逻辑结构和数据的存储结构是相同的。 () 5.程序和算法原则上没有区别,所以在讨论数据结构时可以通用。 () 6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。 () 7.数据的存储结构是数据的逻辑结构的存储映像。 () 习题2 一、选择题 1.下面关于线性表的叙述中,错误的是()。 A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 2.在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为()。 A.O (1)B.O(n) C.O(n2)D.O(log2n) 3.两个指针P和Q,分别指向单链表的两个元素,P所指元素是Q所指元素前驱的条件是()。 A.P->next==Q->nextB.P->next==Q C.Q->next==PD.P==Q 4.在单链表中,增加头结点的目的是()。 A.使单链表至少有一个结点B.标志表中首结点的位置 C.方便运算的实现D.说明该单链表是线性表的链式存储结构 5.在顺序表中,只要知道(),就可以求出任意一个结点的存储地址。 A.基地址B.结点大小 C.向量大小D.基地址和结点大小 6.链表不具备的特点是()。 A.随机访问B.不必事先估计存储空间 C.插入删除时不需移动元素 D.所需空间与线性表成正比 7.在()的运算中,使用顺序表比链表好。 A.插入B.根据序号查找 C.删除D.根据元素查找 8.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是()。 A.p->next=s;s->next=p->next; B.s->next=p->next;p->next=s; C.p->next=s;p->next=s->next; D.p->next=s->next;p->next=s; 9.用链表表示线性表的优点是()。 A.便于进行插入和删除操作B.便于随机存取 C.占用的存储空间较顺序表少D.元素的物理顺序与与逻辑顺序一致 10.在一个长度为n的顺序表中,若要删除第i(1≤i≤n)个元素,则需向前移动()个元素。 A.n-i+1B.n-i-1C.n-iD.i 11.在一个长度为n的顺序表中,若要在第i(1≤i≤n)个元素前插入一个元素时,则需向后移动()个元素。 A.n-i+1B.n-i-1C.n-iD.i 12.设p为指向单循环链表上某结点的指针,则*p的直接前驱()。 A.找不到B.查找时间复杂度为O (1) C.查找时间复杂度为O(n)D.查找结点的次数约为n 13.等概率情况下,在有n个结点的顺序表上做插入结点运算,需平均移动结点的数目为()。 A.nB.(n-1)/2C.n/2D.(n+1)/2 14.以下链表结构中,从当前结点出发能够访问到任意结点的是()。 A.单向链表和双向链表 B.循环链表和单向链表 C.循环链表和双向链表 D.单向链表、双向链表和循环链表 15.对具有n个结点的线性表进行插入或删除操作,所需的算法时间复杂度为()。 A.O(n2)B.O(nlog2n) C.O(log2n)D.O(n) 二、填空题 1.线性表L=(a1,a2,…,an)采用顺序存储,假定删除表中任意元素的概率相同,则删除一个元素平均需要移动元素的个数是。 2.顺序表相对于链表的优点是: 和随机存取;链表相对于顺序表的优点是: 方便。 3.在单链表中要在已知结点*P之前插入一个新结点,需找到*P的直接前趋结点的地址,其查找的时间复杂度为。 4.在长度为n的顺序表中,如果要在第i个元素前插入一个元素,要后移个元素。 5.链表相对于顺序表的优点是插入、删除方便;缺点是存储密度。 6.链式存储的特点是利用来表示数据元素之间的逻辑关系。 7.在双向链表中,每个结点有两个指针域,一个指向其结点,另一个指向其结点。 8.在一个双链表中,设指针p是指向该表中待删除的结点,则需要执行的操作为: 。 9.若对一个线性表经常进行查找操作,而很少进行插入和删除操作时,则采用存储结构为宜,相反,若经常进行的是插入和删除操作时,则采用存储结构为宜。 三、判断题 1.线性表的链式存储结构优于顺序存储结构。 () 2.链表的每个结点都恰好包含一个指针域。 () 3.在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。 () 4.顺序存储方式的优点是存储密度大,插入、删除效率高。 () 5.线性链表的删除算法简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。 6.顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。 () 7.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。 () 8.线性表采用顺序存储,必须占用一片连续的存储单元。 () 9.顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。 () 10.插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。 () 习题3 一、选择题 1.对于栈操作数据的原则是()。 A.先进先出B.后进先出 C.后进后出D.不分顺序 2.有6个元素按6,5,4,3,2,1的顺序进栈,问下列()不是合法的出栈序列? A.543612B.453126 C.346521D.234156 3.插入和删除只能在一端进行的线性表,称为()。 A.队列B.循环队列C.栈D.循环栈 4.输入序列为ABC,可以变为CBA时,经过的栈操作为()。 A.push,pop,push,pop,push,popB.push,push,push,pop,pop,pop C.push,push,pop,pop,push,popD.push,pop,push,push,pop,pop 5.设有编号为1,2,3,4的四辆列车,顺序进入一个栈结构的站台,下列不可能的出站顺序为()。 A.1234B.1243 C.1324D.1423 6.如果以链表作为栈的存储结构,则出栈操作时()。 A.必须判别栈是否满B.必须判别栈是否空 C.必须判别栈元素类型D.队栈可不做任何判别 7.顺序栈存储空间的实现使用()存储栈元素。 A.链表B.数组C.循环链表D.变量 8.在C语言中,一个顺序栈一旦被声明,其占用空间的大小()。 A.已固定B.不固定 C.可以改变D.动态变化 9.从一个栈顶指针为top的链栈中删除一个结点时,用x保存被删除的结点,应执行下列()命令。 A.x=top;top=top->next;B.top=top->next;x=top->data; C.x=top->data;D.x=top->data;top=top->next; 10.4个元素按A,B,C,D顺序进S栈,执行两次Pop(S,x)运算后,栈顶元素的值是()。 A.AB.BC.CD.D 11.在一个栈顶指针为HS的链栈中,将一个S指针所指的结点入栈,应执行下列()命令。 A.HS->next=S; B.S->next=HS->next;HS->next=S; C.S->next=HS->next;HS=S; D.S->next=HS;HS=HS->next; 12.向顺序栈中压入元素时,()。 A.先存入元素,后移动栈顶指针 B.先移动栈顶指针,后存入元素 C.谁先谁后无关紧要 D.同时进行 13.一个栈的入栈次序ABCDE,则栈的不可能的输出序列是()。 A.EDCBAB.DECBA C.DCEABD.ABCDE 14.设有一个顺序栈S,元素A,B,C,D,E,F,依次进栈,如果6个元素出栈的顺序是B,D,C,F,E,A,则栈的容量至少应是()。 A.3B.4 C.5D.6 二、填空题 1.对于栈只能在位置插入和删除元素。 2.在顺序栈中,当栈顶指针top=-1时,表示。 3.在有n个元素的栈中,进栈操作的时间复杂度为。 4.在栈中,出栈操作的时间复杂度为: 。 5.在一个链栈中,若栈顶指针等于NULL,则表示。 6.向一个栈顶指针为top的链栈插入一个新结点*p时,应执行和操作。 7.已知顺序栈S,在对S进行进栈操作之前首先要判断。 8.已知顺序栈S,在对S进行出栈操作之前首先要判断。 9.4个元素按A,B,C,D顺序进S栈,执行两次Pop(S,x)运算后,x的值是。 10.当栈中元素为M时,做进栈操作时发生上溢,则说明栈的最大容量为。 11.一个栈的输入序列是: 1,2,3则不可能的栈输出序列是。 12.若进栈的次序是A,B,C,D,E,执行3次出栈操作以后,栈顶元素为。 三、判断题 1.栈是运算受限制的线性表。 () 2.在栈空的情况下,不能做出栈操作,否则产生下溢出。 () 3.栈一定是顺序存储的线性结构。 () 4.栈的特点是“后进先出”。 () 5.空栈就是所有元素都为0的栈。 () 6.在C语言中设顺序栈的长度为MAXLEN,则top=MAXLEN时表示队满。 () 7.链栈与顺序栈相比,其特点之一是通常不会出现栈满的情况。 () 8.一个栈的输入序列为: A,B,C,D,可以得到输出序列: C,A,B,D。 () 9.递归定义就是循环定义。 () 10.将十进制数转换为二进制数是栈的典型应用之一。 () 四、应用题 1.写出下列程序段的运行结果(栈中的元素类型是char): main() { SeqStackS; charx,y; InitStack(&S); x='C'; y='K'; Push(&S,x); Push(&S,'A'); Push(&S,y); Pop(&S,&x); Push(&S,'T'); Push(&S,x); Pop(&S,&x); Push(&S,'S'); while(! EmptyStack(&S)) { Pop(&S,&y); printf("%c",y); } printf("%c\n",x); } 2.将一个非负十进制整数转换成八进制数的算法实现。 3.设计一个算法判别算术表达式中的圆括号是否配对正确。 习题4 一、选择题 1.对于队列操作数据的原则是()。 A.先进先出B.后进先出 C.先进后出D.不分顺序 2.队列是限定在()进行操作的线性表。 A.中间B.队首 C.队尾D.端点 3.队列中的元素个数是()。 A.不变的B.可变的 C.任意的D.0 4.同一队列内各元素的类型()。 A.必须一致B.不能一致 C.可以不一致D.不限制 5.队列是一个()线性表结构。 A.不加限制的B.推广了的 C.加了限制的D.非 6.当利用大小为n的数组顺序存储一个队列时,该队列的最后一个元素的下标为()。 A.n-2B.n-1 C.nD.n+1 7.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。 A.(rear+1)%n==frontB.rear==front C.rear+1==frontD.(rear-1)%n==front 8.最大容量为n的循环队列,队尾指针是rear,队头是front,则队满的条件是()。 A.(rear+1)%n==frontB.rear==front C.rear+1==frontD.(rear-l)%n==front 9.循环队列占用的空间()。 A.必须连续B.不必连续 C.不能连续D.可以不连续 10.存放循环队列元素的数组data有10个元素,则data数组的下标范围是()。 A.0~10B.0~9 C.1~9D.1~10 11.若进队的序列为: A,B,C,D,则出队的序列是()。 A.B,C,D,AB.A,C,B,D C.A,B,C,DD.C,B,D,A 12.4个元素按: A,B,C,D顺序连续进队Q,则队尾元素是()。 A.AB.B C.CD.D 13.循环队列SQ队满的条件是()。 A.SQ->rear==SQ->front B.(SQ->rear+1)%MAXLEN==SQ->front C.SQ->rear==0 D.SQ->front==0 14.设链栈中结点的结构: data为数据域,next为指针域,且top是栈顶指针。 若想在链栈的栈顶插入一个由指针s所指的结点,则应执行下列()操作。 A.s->next=top->next;top->next=s; B.top->next=s; C.s->next=top;top=top->next; D.s->next=top;top=s; 15.若用一个大小为6的数组来实现循环队列,且当前front和rear的值分别为3和0,当从队列中删除一个元素,再加入两个元素后,front和rear的值分别为()。 A.5和1B.4和2 C.2和4D.1和5 16.栈和队列的共同点是()。 A.都是先进先出 B.都是先进后出 C.只允许在端点处插入和删除元素 D.没有共同点 17.栈和队都是()。 A.顺序存储的线性结构 B.链式存储的非线性结构 C.限制存取点的线性结构 D.限制存取点的非线性结构 二、填空题 1.循环队列的引入,目的是为了克服现象。 2.在队列中存取数据应遵循的原则是。 3.是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。 4.在队列中,允许插入的一端称为。 5.在队列中,允许删除的一端称为。 6.队列在进行出队操作时,首先要判断队列是否为。 7.顺序队列在进行入队操作时,首先要判断队列是否为。 8.顺序队列初始化后,front=rear=。 9.循环队列的队首指针为front,队尾指针为rear,则队空的条件为。 10.链队列LQ为空时,LQ->front->next=。 11.在一个链队列中,若队首指针与队尾指针的值相同,则表示该队列为。 12.设循环队列的头指针front指向队首元素,尾指针rear指向队尾元素后的一个空闲元素,队列的最大空间为MAXLEN,则队满标志为。 三、判断题 1.队列是限制在两端进行操作的线性表。 () 2.判断顺序队列为空的标准是头指针和尾指针都指向同一个结点。 () 3.在链队列上进行出队操作时,会改变front指针的值。 () 4.在循环队列中,若尾指针rear大于头指针front,其元素个数为rear-front。 () 5.在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是p=h。 6.链队列在一定范围内不会出现队满的情况。 () 7.在循环链队列中无溢出现象。 () 8.栈和队列都是顺序存储的线性结构。 () 9.在队列中允许删除的一端称为队尾。 () 10.顺序队和循环队关于队满和队空的判断条件是一样的。 () 四、应用题 1.请简述线性表、栈、队列有什么异同? 2.写出下列程序段的运行结果(队列中的元素类型是char) main() { SeqQueueQ; charx,y; x='E'; y='C'; InitQueue(&Q); EnQueue(&Q,'H'); EnQueue(&Q,'R'); EnQueue(&Q,y); DeQueue(&Q,&x); EnQueue(&Q,x); DeQueue(&Q,&x); EnQueue(&Q,'A'); while(! EmptyQueue(&Q)) { DeQueue(&Q,&y); printf("%c",y); } printf("%c\n",x); } 3.假定用一个循环单链表表示一个循环队列,该队列只设一个队尾指针rear,试填空完成向循环队列中插入一个元素为x的结点的函数。 typedefstructqueuenode { intdata; structqueuenode*next; }qu; InQueue(qu*rear,intx) { qu*head,*s; s= (1); s->data= (2); if(rear==NULL) { rear=s;rear->next=(3); }else { head=(4); rear->next=(5); rear=s; (6)=head; } } 4.一个用单链表组成的循环队列,只设一个尾指针rear,不设头指针,请编写如下算法: (1)向循环队列中插入一个元素为x的结点; (2)从循环队列中删除一个结点。 习题5 一、选择题 1.以下说法正确的是()。 A.串是一种特殊的线性表B.串的长度必须大于零 C.串中的元素只能是字母D.空串就是空白串 2.设有一个字符串S="WelcometoShenyang! ",问该串的长度为()。 A.18B.19 C.20D.21 3.设有一个字符串S="abcdefgh",问该串的最大子串个数为()。 A.8B.36 C.37D.9 4.两个字符串相等的条件是()。 A.两串的长度相等 B.两串包含的字符相同 C.两串的长度相等,并且两串包含的字符相同
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 习题