赞
踩
1.顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
false
正好说反了。顺序表才适合随机存取,链表恰恰适于“顺藤摸瓜”
2. 在带头结点的循环单链表中,尾元结点的next指针指向链表的首元结点。
false
尾元结点的next值指向链表的头节点,而不是首元结点。
首元结点指的是链表中存储第一个数据元素的结点。头节点是在首元结点之前设置的一个结点。
3.在单链表表尾插入结点与在表中插入结点处理的方法不同。
false
4.顺序表中第一个元素的存储地址是1000,每个元素的长度为20,则第21个元素的地址是()。
A、1020
B、1380
C 1400
D、1420
p=1000+(21-1)*20
5.创建一个包括n个结点的有序单链表的时间复杂度是()。
A、O(1)
B、O(n)
C、O(nlog2n)
D、O(n2)
创建单链表的时间复杂度是O(n),而要创建有序的单链表,则每生成一个新节点时都要与已存在的结点进行比较,确定恰当的插入位置,因此时间复杂度是O(n^2)。
6.若要在O(1)的时间复杂度上实现两个循环单链表头尾相接,则对应两个循环单链表各设置一个指针,分别指向()。
A、各自的头结点
B、各自的尾元结点
C、各自的首元结点
D、一个表的头结点,另一个表的尾元结点
A为A的尾结点,B为B的尾结点,则
p=B->next->next;
B->next=A->next;
A->next=p;
选项B;
7.带头结点的循环双链表L为空表的条件是()。
A、L->prior->next==NULL;
B、L->next ==L;
C、L->prior==NULL;
D、L==NULL;
循环双向链表,空表时,L->next==L->piror==NULL;
8.已知表头元素为c的单链表在内存中的存储状态如图
所示。现将f存放于1014H处并插入到单链表中,若f在逻辑上位于a和e之间,则a、e、f的“链接地址”依次是( )。
A、1010H,1014H,1004H
B、1010H,1004H,1014H
C、1014H,1010H,1004H
D、1014H,1004H,1010H
答案:D
解析:根据存储状态,单链表的结构如下图所示。其中“链接地址”是指结点next所指的内存地址。当结点f插入后,a指向f, f指向e, e指向b。显然a、e和f的“链接地址”分别是f、b和e的内存地址,即1014H、1004H和1010H。
9.已知L是带头结点单链表的表头指针,则从链上摘下首元结点的语句是()。
A、q=L; L=L->next;
B、q=L->next; L->next=q->next;
C、q=L; L=L->next->next;
D、L->next=L;
同时也是注意首元结点与头节点概念及定义,见2
10.在长度为n的顺序表的表尾插入一个新元素的时间复杂度为()。
A、O(n)
B、O(1)
C、O(n2)
D、O(log2n)
是数据表的插入,不是线性表。
数组的存储特性:
1、一个数组占据的存储空间大小固定,不能改变
2、所占据的存储空间是专用的,不能被其他信息占据
3、所占据的存储空间是连续性的,中间不能间隔其他的信息
4、数组中的各个元素可以用数组名和下标直接访问
11.设rear是指向非空的带头结点的循环单链表的尾元结点的指针。若想删除链表的首元结点,则应执行()操作。
A、s=rear; rear=rear->next; delete s;
B、rear=rear->next; delete rear;
C、rear=rear->next->next; delete rear;
D、s=rear->next->next; rear->next->next=s->next; delete s;
同样是注意首元结点,尾元结点与数组之间的关系;
12.从一个具有n个结点的有序单链表中查找其值等于x的结点时,在查找成功的情况下,需要平均比较()个结点。
A、n
B、n/2
C、(n-1)/2
D、(n+1)/2
等差数列的求和。从头到尾需要比较1~n次,相加得:(n+1)n/2,除以n(有n个元素),得(n+1)/2
13.已知指针h指向一个带头结点的非空单循环链表,结点结构为:(data,next),其中next是指向直接后继结点的指针,p是尾指针,q为临时指针。现要删除该链表的第一个元素,正确的语句序列是( )。
A、h->next=h->next->next; q=h->next; free(q);
B、q=h->next; h->next=h->next->next; free(q);
C、q=h->next; h->next=q->next; if(p!=q) p=h; free(q);
D、q=h->next; h->next=q->next; if(p==q) p=h; free(q);
同样是注意首元结点,尾元结点与数组之间的关系;
15.栈和队列具有相同的()。
A、抽象数据类型
B、逻辑结构
C、存储结构
D、运算
栈和队列具有相同的逻辑结构,都是一种受限的线性表 (线性结构);
逻辑结构:
集合结构,线性结构,树状结构,网络结构等;
物理结构(存储结构):顺序存储结构,链式存储结构;
栈和队列都有顺序表示和链式表示。
16.顺序栈存放在数组a[n]
中,top
指向栈顶,top= -1
表示栈空。在栈不满的情况下,元素x
进栈的操作为()。
A、a[top--]=x
B、a[--top]=x
C、a[top++]=x
D、a[++top]=x
注意题中所给条件,top=-1时表示栈空。故选D;
17.()算法设计策略与递归技术的联系最弱。
A、回溯法
B、贪心法
C、分治法
D、减治法
分治法:
将一个大的问题分解成若干个小的问题,并且这些小问题与大问题的问题性质保持一致,通过处理小问题从而处理大问题。这里用到了递归的思想。
贪心法:
贪心法是从问题的某一个初始解出发,在每一个阶段都根据贪心策略来做出当前最优的决策,逐步逼近给定的目标,尽可能快地求得更好的解。当达到算法中的某一步不能再继续前进时,算法终止。贪心法可以理解为以逐步的局部最优,达到最终的全局最优。
减治法:
减治法同样是讲一个大问题划分为若干个小的子问题,但是这些子问题不需要分别求解,只需要求解其中一个子问题便可,因此也不需要对子问题进行合并,可以说,减治法是一种退化版的分治法。
18.入栈顺序为P1, P2,…, Pn,出栈顺序为1,2,3,…,n,如果P3=1,则P1的值()。
A、一定是3
B、一定是2
C、可能是2
D、不可能是2
顺序栈的出入栈顺序
19.循环队列存放在数组a[0…n]
中。队列非空时front
指向队头元素,rear
指向队尾元素。初始时队列为空,要求第一个入队的元素存放在a[0]
处,则front
和rear
的初始值为()。
A、0,0
B、0,n-1
C、0,n
D、n,n
循环队列的存储
(1)队头指针
①指向队头元素
②指向队头元素元素的前一个位置
(2)队尾指针
①指向队尾元素
②指向队尾元素的后一个位置
指示方法不同元素入队和出队操作也不同,但是在做大部分题目的时候,我们并不需要分析队头指针和队尾指针具体操作,我们只要记住下面两个结论就行结论
结论一:当队列执行元素入队操作时,队尾指针(rear)向后移(rear++),队头指针(front)不变
结论二:当队列执行元素出队操作时,队头指针(front)向后移(front++),队尾指针(rear)不变
原文链接:https://blog.csdn.net/qq_50710984/article/details/113923385
20.链栈与顺序栈相比,更容易实现插入操作。
A、对
B、错
21.若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1...(n(n+1))/2]
中,则在B中确定aij(i〈j)
的位置k的关系为( )。
A、i*(i-1)/2+j
B、j*(j-1)/2+i
C、i*(i+1)/2+j
D、j*(j+1)/2+i
原理就是等差数列求和,题目里给的数组第一个元素是1,不是0,这要特别注意。
22.有一个100阶的三对角矩阵M,其元素mi,j(1≤i≤100,1≤j≤100)
按行优先次序压缩存入下标
从0开始的一维数组N中。元素m30,30在N中的下标是( )。
A、85
B、86
C、87
D、88
除了第一行和最后一行是每行2个元素外,中间的每行都是三个元素。
因此,m 30 , 30 m_{30,30}m
30,30
,就是2+3*28+2 = 88
这是从1开始编号的,那么从0开始编号就是87号。
原文链接:https://blog.csdn.net/u011240016/article/details/53260458
23.设有一个n*n
的对称矩阵A,将其下三角部分按行存放在一维数组B 中,而A[0][0]
存放于B[0]
中,那么,第i 行对角线元素A[i][i]
存放于B 中( )处。
A、(2n-i+1)i /2
B、(2n-i-1)i /2
C、(i+3)i /2
D、(i+1)i /2
24.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( )。
A、13
B、31
C、32
D、33
因为是对称矩阵,只用存一半的元素。a85前面有7行,共有7*8/2个元素,由于a85是第八行第五个,所以地址为7*8/2+5=33,故选D;
25.将三对角矩阵A[1…100,1…100]
按行优先存入一维数组B[1,…,298]
中,A中元素A[66,67]
在B中的位置K为( )。
A、198
B、197
C、199
D、195
26.一个非空广义表的表尾 () 。
A、只能是子表
B、不能是子表
C、只能是原子元素
D、可以是原子元素或子表
一个非空广义表的表尾只能是子表
27.已知广义表 A=((a, (b, c) ) , (a, (b, c) , d) )
,则运算 head(head(tail(A))) 的结果是 ( ) 。
A、a
B、(b,c)
C、(a,(b,c))
D、()
由于 一个非空广义表的表尾只能是子表,所以第一次取tail得到
((a, (b, c) , d)),第二次取head得到(a, (b, c) , d),第三次取head得到 a;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。