炔徘且力侗轿矫晶柑方烙形堵
第一章引论
在线练习1
1、单选题:
在数据结构中,与所使用的计算机无关的是数据的( )的结构。
答案: 逻辑
2、单选题:
数据结构在计算机内存中的表示是指( )。
答案: 数据的存储结构
3、单选题:
在数据结构中,从逻辑上可以将之分为( )结构。
答案: 线性和非线性结构
4、单选题:
在数据结构中,从存储上可以将之分为( )结构。
答案: 顺序和非顺序结构
5、单选题:
算法的时间复杂度取决于( )。
答案: 问题的规模以及待处理数据的初态
6、单选题:
某算法的时间复杂度是O(n^2),表明该算法的( )。
答案: 执行时间与n^2成正比
7、单选题:
衡量算法效率优劣的不包括( )。
答案: 现实性
8、单选题:
算法指( )。
答案: 解决问题的步骤序列
9、单选题:
下面的程序段时间复杂度为( )。 for(i=1;i<n;i++) for(j=1;j<n;j++) x=x+1;
答案: O(n^2)
10、单选题:
算法效率分析的两个主要方面是( )。
答案: 空间复杂度和时间复杂度
11、单选题:
有如下递归函数fact(n),分析其时间复杂度为( )。int fact(int n){ if(n<=1) return 1; else return(n*fact(n-1));}
答案: O(n)
12、单选题:
下面程序段的时间复杂度为( )。for(i=0;i<n;i++) for(j=0;j<m;j++) A[i][j]=0;
答案: O(n*m)
13、单选题:
下面程序段的时间复杂度为( )。void sum(int n) //n为正整数{ int p=1,sum=0,i; for(i=1;i<=n;i++) { p*=i; sum+=p; }}
答案: O(n)
14、判断题:
顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
答案: 错误
15、判断题:
算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。
答案: 错误
16、判断题:
链式存储的优点是可以随机存储。
答案: 错误
17、判断题:
在相同的数据规模n下,复杂度为O(n)的算法在时间上总是优于复杂度为O()的算法。
答案: 正确
18、判断题:
数据的逻辑结构分为线性结构、树型结构、图状结构和集合。
答案: 正确
19、判断题:
数据的存储结构表示的是数据元素之间的逻辑关系。
答案: 错误
测验
1、判断题:
一个算法包含的循环嵌套的层数越多,该算法的时间复杂度越高。
答案: 正确
测验1
1、单选题:
数据的逻辑结构包括?
答案: 线性结构和非线性结构
第二章线性表
在线练习2
1、单选题:
下述哪一条是顺序存储结构的优点( )。
答案: 存储密度大
2、单选题:
下面关于线性表叙述中错误的是( )。
答案: 线性表采用顺序存储,便于进行插入和删除操作。
3、单选题:
若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。
答案: 顺序表
4、单选题:
设某顺序表中第一个元素的地址是Base,下限值为1,每个结点占m个单元,则第i个结点的地址为( )。
答案: Base+(i-1)×m
5、单选题:
某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。
答案: 仅有尾指针的单循环链表
6、单选题:
设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。
答案: 带头结点的双循环链表
7、单选题:
链表不具有的特点是( )。
答案: 可随机访问任意元素
8、单选题:
线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。
答案: 连续或不连续都可以
9、单选题:
静态链表中指针表示的是( )。
答案: 下一元素在数组中的下标
10、单选题:
若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为 ()。
答案: O(n)
11、单选题:
对于顺序表,访问结点和删除结点的时间复杂度分别为( )。
答案: O(1) O(n)
12、单选题:
在单链表指针为p的结点之后插入指针为s的结点,正确的操作是( )。
答案: s->next=p->next;p->next=s;
13、单选题:
对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( )。
答案: head→next==NULL
14、单选题:
将两个各有n个元素的有序表合并成一个有序表,其最少的比较次数是( )。
答案: n
15、单选题:
在双向链表中,在p所指向的结点前插入一个q所指向的结点,相应的操作语句是( )。注:双向链表的结点结构为(prior,data,next)。
答案: q->next=p;q->prior=p->prior;p->prior->next=q;p->prior=q;
16、单选题:
线性表( a1,a2,…,an)以链式方式存储时,访问第i个元素的时间复杂度为( )
答案: O(n)
17、单选题:
头指针为H的循环单链表中尾结点P的特点是( )。
答案: P->next=H
18、单选题:
两个指针P和Q,分别指向单链表的两个结点,P是Q的前驱结点的条件是( )。
答案: P->next==Q
19、单选题:
在单链表中,增加头结点的目的是( )。
答案: 链表判空、插入第一个结点以及删除第一个结点等运算方便
20、单选题:
下面关于线性表的叙述中,错误的是( )。
答案: 链表可以随机存取任一元素
21、单选题:
设p为指向长度为n的单循环链表上某结点的指针,则找到p的直接前驱( )。
答案: 时间复杂度为O(n)
22、单选题:
以下关于线性表的论述,不正确的是( )。
答案: 线性表中的每个结点都有且仅有一个直接前趋和一个直接后继。
23、单选题:
在( )的运算中,使用顺序表比链表好。
答案: 根据序号查找
24、判断题:
静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。
答案: 正确
25、判断题:
线性表的特点是每个元素都有一个前驱和一个后继。
答案: 错误
26、判断题:
若长度为n的线性表采用顺序存储结构,找到其中第i个元素的时间复杂度为O(n)。
答案: 错误
27、判断题:
已知带头结点的双向循环链表L,判断其为空表的条件是L->next==L && L->prior==L。
答案: 正确
28、判断题:
顺序表的插入、删除运算更方便。
答案: 错误
29、判断题:
链表的性能优于顺序表。
答案: 错误
30、判断题:
顺序表适宜于顺序存取,而链表适宜于随机存取。
答案: 错误
31、判断题:
顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
答案: 错误
32、判断题:
插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。
答案: 错误
33、判断题:
线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上不一定相邻。
答案: 正确
测验
1、判断题:
在双向链表中查找某一结点的前驱或者后继,都非常方便。
答案: 正确
第三章栈和队列
单元测试1
1、单选题:
栈和队列的共同点是( )。
答案: 只允许在端点处插入和删除元素
2、单选题:
栈和队都是( )。
答案: 限制存取点的线性结构
3、单选题:
依照六个元素6,5,4,3,2,1 的顺序进栈,下列哪一个出栈序列不可能( )。
答案: 346521
4、单选题:
设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后随即进入队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈S的容量至少应该是( )。
答案: 3
5、单选题:
设计一个判别表达式中括号是否匹配出现的算法,采用( )的数据结构最佳。
答案: 栈
6、单选题:
表达式a*(b+c)-d的后缀表达式是( )。
答案: abc+*d-
7、单选题:
函数递归调用时,处理参数及返回地址需要用一种( )的数据结构。
答案: 栈
8、单选题:
若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为3和1,当从队列中删除一个元素再加入两个元素后,rear和front的值为( )。
答案: 5和2
9、单选题:
最大容量为n的循环队列,队尾指针为rear,队头指针为front,则队空的条件是( )。
答案: rear==front
10、单选题:
假设以数组A[m]存放循环队列的元素,其头、尾指针分别为front和rear,front指示实际的队头元素,rear指向实际队尾元素的下一个元素位置,则当前队列中的元素个数为( )。
答案: (rear-front+m)%m
11、单选题:
用带头结点的表长大于1的单链表表示队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时( )。
答案: 仅修改队头指针
12、单选题:
下列说法正确的是( )。(1)只有使用了局部变量的递归函数在转换成非递归函数时才必须使用栈。(2)队列是插入与删除操作在表的两端进行的线性表,具有先进后出的特点。(3)队列是一端进行删除另外一端进行插入的线性表。(4)循环队列也存在空间溢出问题。
答案: (3)(4)
13、单选题:
以下程序的输出结果为( )。 int f( int x) { return (x>0)?x*f(x-1):2; } void main() { int i ; i=f(f(1)); printf(“%d”,i); }
答案: 4
14、单选题:
若一个栈以数组V[0..n-1]存储,初始栈顶指针top为n,则下面关于元素x进栈的正确操作是( )。
答案: top=top-1; V[top]=x;
15、单选题:
一个递归算法必须包括( )。
答案: 终止条件和递归部分
16、单选题:
输入序列为ABC,想要得到CBA的输出结果,可以经过的栈操作为( )。
答案: push,push,push,pop,pop,pop
17、单选题:
一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( )。
答案: 5 4 1 3 2
18、单选题:
一个栈的输入序列为1,2,3,…,n,若输出序列的第一个元素是i,则输出第j(1<=j<=i)个元素是( )。
答案: i-j+1
19、单选题:
在双向链表(结点包括:data,prior,next)中,删除指针p所指向的结点时须修改指针( )。
答案: p->prior->next=p->next;p->next->prior=p->prior;
20、单选题:
以下说法错误的是 ( )。
答案: 对循环链表来说,从表中任意结点出发都能通过前后操作而扫描到整个循环链表。
21、单选题:
对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度和在给定值为x的结点后插入一个新结点的时间复杂度分别为( )。
答案: O(1),O(n)
22、单选题:
循环队列存储在数组A[0..m-1]中,则入队时rear应该变化为( )。
答案: rear=(rear+1) mod m;
23、单选题:
当利用大小为n的数组顺序存储一个栈时,假定用top=n表示栈空,则每次向这个栈插入一个元素时,首先应执行( )语句修改top指针。
答案: top–;
24、单选题:
若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。
答案: 顺序表
25、单选题:
链表不具有的特点是( )。
答案: 可随机访问任意元素
26、单选题:
设某顺序表中第一个元素的地址是Base,下标从1开始,每个结点占m个单元,则第i个结点的地址为( )。
答案: Base+(i-1)×m
27、单选题:
在下面的程序段中,对x的赋值语句的频度为( )。 for(i=1;i<n;i++) for(j=1;j<n;j++) x=x+1;
答案: O(n^2)
28、单选题:
数据结构在计算机内存中的表示是指( )。
答案: 数据的存储结构
29、判断题:
消除递归不一定需要使用栈,此说法( )。
答案: 正确
30、判断题:
两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出,应把两个栈的栈底分别设在这片内存空间的两端。( )
答案: 正确
31、判断题:
顺序栈因为是顺序存储,所以可以随机存取栈中任意元素。( )
答案: 错误
32、判断题:
有n个数顺序依次进栈,出栈序列有Cn种,Cn=[1/(n+1)]*(2n)!/[(n!)*(n!)]。( )
答案: 正确
33、判断题:
任何一个递归过程都可以转换成非递归过程。( )
答案: 正确
34、判断题:
两顺序栈共享空间,也存在空间溢出问题。( )
答案: 正确
35、判断题:
栈和队列都是线性表,只是在插入和删除时受到了一些限制。( )
答案: 正确
36、判断题:
栈和队列的存储方式,既可以是顺序方式,也可以是链式方式。( )
答案: 正确
37、判断题:
线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。
答案: 正确
38、判断题:
顺序表适宜于顺序存取,而链表适宜于随机存取。
答案: 错误
上方为免费预览版答案,如需购买完整答案,请点击下方红字
为了方便下次阅读,建议在浏览器添加书签收藏本网页
添加书签方法:
1.电脑按键盘的Ctrl键+D键即可收藏本网页
2.手机浏览器可以添加书签收藏本网页
我们的公众号
打开手机微信,扫一扫下方二维码,关注微信公众号:萌面人APP
本公众号可查看各种网课答案,还可免费查看大学教材答案
率遂事散冬栏悍按蕉储伐来翅