【考研类试卷】计算机学科专业基础综合数据结构-算法复杂度相关问题专练、线性表及答案解析.doc
《【考研类试卷】计算机学科专业基础综合数据结构-算法复杂度相关问题专练、线性表及答案解析.doc》由会员分享,可在线阅读,更多相关《【考研类试卷】计算机学科专业基础综合数据结构-算法复杂度相关问题专练、线性表及答案解析.doc(24页珍藏版)》请在麦多课文档分享上搜索。
1、计算机学科专业基础综合数据结构-算法复杂度相关问题专练、线性表及答案解析(总分:92.06,做题时间:90 分钟)一、B单项选择题/B(总题数:21,分数:21.00)1.线性表是_。 A.一个有限序列,可以为空 B.一个有限序列,不能为空 C.一个无限序列,可以为空 D.一个无限序列,不能为空(分数:1.00)A.B.C.D.2.若想在单链表中删除某结点 p(p 既不是第一个,也不是最后一个结点)的直接后继,则应执行_操作。 A.pnext=pnextnext B.p=pnext;pnext=pnextnext C.pnext=pnext D.p=pnextnext(分数:1.00)A.B.
2、C.D.3.已知 L 是带表头结点的单链表,则删除首元结点的语句是_。 A.L=Lnext B.Lnext=Lnextnext C.L=Lnextnext D.Lnext=L(分数:1.00)A.B.C.D.4.用链表表示线性表的优点是_。 A.便于随机存取 B.花费的存储空间较顺序存储少 C.便于插入和删除 D.数据元素的物理顺序与逻辑顺序相同(分数:1.00)A.B.C.D.5.在单链表中,增加一个头结点的目的是为了_。 A.使单链表至少有一个结点 B.标识表结点中首结点的位置 C.方便运算的实现 D.说明单链表是线性表的链式存储(分数:1.00)A.B.C.D.6.已知单链表 A 的长度
3、为 m,单链表 B 的长度为 n,若将 B 链接在 A 的末尾,在没有链尾指针的情况下,算法的时间复杂度应为_。 A.O(1) B.O(m) C.O(n) D.O(m+n)(分数:1.00)A.B.C.D.7.从一个具有 n 个结点的有序单链表中查找其值等于 x 的结点时,在查找成功的情况下,需要平均比较_个结点。 A.n B.n/2 C.(n-1)/2 D.(n+1)/2(分数:1.00)A.B.C.D.8.循环链表的主要优点是_。 A.不再需要头指针了 B.已知某个结点的位置后,能够容易找到它的直接前趋 C.在进行插入、删除运算时,能更好地保证链表不断开 D.从表中的任意结点出发都能扫描到
4、整个链表(分数:1.00)A.B.C.D.9.对顺序存储的线性表,设其长度为 n,在任何位置上插入或删除操作都是等概率的。插入一个元素时平均要移动表中的_个元素。 A.n/2 B.(n+1)/2 C.(n-1)/2 D.n(分数:1.00)A.B.C.D.10.在一个具有 n 个结点的单链表中插入一个新结点,并可以不保持原有顺序的算法的时间复杂度是_。 A.O(1) B.O(n) C.O(n2) D.D(nlog2n)(分数:1.00)A.B.C.D.11.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用_存储方式最节省运算时间。 A.单链表 B.仅有头指针的单
5、循环链表 C.双链表 D.仅有尾指针的单循环链表(分数:1.00)A.B.C.D.12.非空的循环单链表 head 的链尾结点(由 p 所指向)满足_。 A.Pnext=NULL; B.P=NULL; C.Pnext=head; D.P=head;(分数:1.00)A.B.C.D.13.在长度为 n 的顺序表的表尾插入一个新元素的时间复杂度为_。 A.O(n) B.O(1) C.O(n2) D.O(log2n)(分数:1.00)A.B.C.D.14.单链表又称为线性链表,在单链表上实施插入和删除操作_。 A.不需移动结点,不需改变结点指针 B.不需移动结点,只需改变结点指针 C.只需移动结点,
6、不需改变结点指针 D.既需移动结点,又需改变结点指针(分数:1.00)A.B.C.D.15.不带表头结点的单链表 first 为空的判定条件是U /U,带表头结点的单链表 first 为空的判定条件是 firstnext=NULL;。 A.first=NULL; B.firstnext=NULL; C.firstnext=first; D.first!=NULL;(分数:1.00)A.B.C.D.16.已知单链表中结点 p 不是链尾结点,若在 p 之后插入结点 s,则应执行_操作。 A.Snext=p;pnext=S; B.pnext=S;Snext=p; C.snext=pnext;p=s;
7、 D.Snext=pnext;pnext=S;(分数:1.00)A.B.C.D.17.一个向量(一种顺序表),第一个元素的存储地址是 100,每个元素的长度为 2,则第 5 个元素的地址是_。 A.110 B.108 C.100 D.120(分数:1.00)A.B.C.D.18.设 rear 是指向非空的带表头结点的单循环链表的链尾结点的指针。若想删除链表第一个结点,则应执行_操作。 A.s=rear;rear=rearnext;free(s); B.rear=rearnext;free(rear); C.rear=rearnextnext;free(rear); D.s=rearnextne
8、xt;rearnextnext=snext;free(s);(分数:1.00)A.B.C.D.19.设双向循环链表中结点的结构为(data,prior,next),且不带表头结点。若想在结点 p 之后插入结点s,则应执行_操作。 A.pnext=s;sprior=p;pnextprior=s;snext=pneXt; B.pnext=s;pnextprior=s;sprior=p;snext=pnext; C.sprior=p;snext=pnext;pnext=s;pnextprior=s; D.sprior=p;snext=pnext;pnextprior=s;pnext=s;(分数:1.
9、00)A.B.C.D.20.给定有 n 个元素的一维数组,建立一个有序单链表的时间复杂度是_。 A.O(1) B.O(n) C.O(n2) D.O(nlog2n)(分数:1.00)A.B.C.D.21.在一个单链表中,已知 q 所指结点是 p 所指结点的前驱结点,若在 q 和 p 之间插入 s 结点,则执行_操作。 A.snext=pnext;pnext=s; B.pnext=snext;snext=p; C.qnext=s;snext=p; D.pnext=s;snext=q;(分数:1.00)A.B.C.D.二、B综合应用题/B(总题数:3,分数:71.00)分析以下各程序段的时间复杂度。
10、(分数:18.00)(1).void main() int i=1,k=0,n=10; while(i=n-1) k+=10*i; +i; (分数:2.00)_(2).void main() int i=1,k=0,n=100; do k+=10*i;+i; while(i=n); (分数:2.00)_(3).void main() int i=1,j=0,n=10; while(i+j=n) if(ij) +j; else +i; (分数:2.00)_(4).void main() int n=10,x=n,y=0; while(x=(y+1)*(y+1) +y; (分数:2.00)_(5)
11、.void main() int n=9,i=1; while(i=n) i=i*3; (分数:2.00)_(6).分析以下程序段的时间复杂度。 . i=1; while(i=n) i=i*2; .(分数:2.00)_(7).假设 n 为 2 的乘幂,如 n=2,4,8,16,试求下列程序的时间复杂度及变量 count 的值(以 n 的函数形式表示)。 void counter() int n,x,count; cout“n: “; cinn; count=0; x=2; while(xn/2) x=2*x; +count; coutcountendl; (分数:2.00)_(8).某算法所需
12、时间由下述方程表示,试求出该算法的时间复杂度(以大 O 形式表示)。注意,n 为求解问题的规模,为简单起见,设 n 是 2 的正整数幂。 (分数:2.00)_(9).分析 order 函数的时间复杂度。 order(int j,int n) int i,temp; if(jn) for(i=j;i=n; +i) if(aiaj) temp=ai; ai=aj; aj=temp; +j; order(j,n); /递归调用 (分数:2.00)_斐波那契数列 Fn定义如下:F 0=0,F 1=1,F n=Fn-1+Fn-2,n=2,3,就此斐波那契数列,回答下列问题。(分数:4.00)(1).在递
13、归计算 Fn时,需要对较小的 Fn-1,F n-2,F 1,F 0精确计算多少次?(分数:2.00)_(2).如果用大 O 表示法,递归计算 Fn时递归函数的时间复杂度是多少?(分数:2.00)_设计求解下列问题的算法,并分析其最坏情况的时间复杂度。(分数:49.06)(1).在数组 A1,n中查找值为 K 的元素,若找到则输出其位置 i;否则输出 0 作为标志。(分数:2.23)_(2).找出数组 A1,n中元素的最大值和次最大值。(分数:2.23)_(3).以下算法是在一个有 n 个数据元素的数组 A 中删除第 i 个位置的数组元素,要求当删除成功时数组元素个数减 1,求平均删除一个数组元
14、素需要移动的元素个数是多少?其中,数组下标从 0 至 n-1。 int delete(int A,int n,int i) int j; if(i0|in) return 0; for(j=i+1;jn;+j) Aj-1=Aj;-n; return 1; (分数:2.23)_(4).说明在线性表的链式存储结构中,头指针与头结点之间的根本区别以及头结点与开始结点的关系。(分数:2.23)_(5).请简要比较顺序表和链表各自的特点。(分数:2.23)_(6).编写一个算法实现两个有序(从小到大)顺序表合并成为一个顺序表,合并后的结果放在第一个顺序表中,不另设新的顺序表存储(假设这两个有序顺序表中没
15、有相同的元素)。(分数:2.23)_(7).设 A=(a1,a 2,a m)和 B=(b1,b 2,b n)均为顺序表。若 n=m 且 ai=bi(i=1,n),则称 A=B;若 ai=bi(i=1,j)且 aj+1b j+1(jnm),则称 AB;在其他情况下均称 AB。试编写一个比较 A 和B 的算法,当 AB、A=B 或 AB 时分别输出-1、0 或 1。(分数:2.23)_(8).编写一个算法,将 m(m2)个有序(从小到大)顺序表合并成一个有序顺序表,合并过程中不另设新的顺序表存储。(分数:2.23)_(9).设 A 和 B 是两个顺序表,其元素按从小到大的顺序排列。编写一个将 A
16、和 B 中相同元素组成一个新的从大到小的有序顺序表 C 的算法,并分析算法的时间复杂度。(分数:2.23)_(10).设 A 和 B 是两个顺序表,其元素按非递减的顺序排列。编写一个将 A 和 B 中所有元素组成一个新的从小到大的有序顺序表 C 的算法,要求删除重复的元素,并返回 C 表的长度。(分数:2.23)_(11).设有一个表头指针为 h 的单链表,试设计一个算法,通过遍历一趟链表,将链表中所有结点的链方向逆转,如图所示。(分数:2.23)_(12).以下是两个 n 阶方阵的乘积 C=AB,给出该算法的时间复杂度。 void matmult(int n,float AmaxSize,f
17、loat BmaxSize,float CmaxSizemaxSize) int i,j,k; float x; for(i=1;i=n;+i) / for(j=1;j=n;+j) / x=0; / for(k=1;k=n;+k) / x+=Aik*Bkj; / Cij=x; / (分数:2.23)_(13).假设有 n(n1)个线性表顺序地存放在顺序表 S1,m中,令 Fi和 Ri指示第 i 个(1in)表的第 1 个元素和最后 1 个元素在 S 中的位置,并设定 RiFi+1,Fn+1=m+1,如图所示。试写出实现下列要求的算法。(分数:2.23)_(14).设某机器表示的整数不超过 5
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考研 试卷 计算机 学科专业 基础 综合 数据结构 算法 复杂度 相关 问题 线性 答案 解析 DOC
