将递增有序的单链表A和B合并成递减有序的单链表C

合集下载

北京邮电大学2018年807软件工程考研真题

北京邮电大学2018年807软件工程考研真题

北京邮电大学2018年硕士研究生入学统一考试试题考试科目:软件工程专业综合请考生注意:①所有答案(包括选择题和填空题)一律写在答题纸上,否则不计成绩②不允许考生使用计算器。

本试题包含数据结构,数据库和操作系统三个科目。

请考生在答题时注明答题科目。

数据结构总分90分,为必选部分。

其他两部分总分各为60分,是二选一科目。

必选科目数据结构(90分)一、选择题(每小题2分,共20分)1.在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)B.在第i个结点后插入一个新结点(1≤i≤n)C.删除第i个结点(1≤i≤n)D.将n个结点从小到大排序2 .若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1, p2, p3, …, p n,若p1=n,则p i为:A.i B.n-i C.n-i+1 D.不确定3.设有两个串p和q,求q在p中首次出现的位置的运算称作:A.连接 B.模式匹配 C.求子串 D.求串长4.二叉排序树的前序遍历和中序遍历序列如下:前序遍历:EFHIGJK,中序遍历:HFIEJKG。

该二叉树的根的右子树的根是:A.E B.F C.G D.H5.已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是:A.0321 B.0123 C.0132 D. 03126.下列二叉排序树中查找效率最高的是:A.平衡二叉树 B.排序二叉树C.没有左子树的排序二叉树 D.没有右子树的排序二叉树7.要尽可能快的对序列进行稳定的排序,则应该选择:A.快速排序 B.归并排序 C.冒泡排序 D.堆排序8.哈希表的地址区间是0到16,哈希函数为H(K)=K mod 17,采用线性探测法处理冲突,并将关键字序列26,25,72,38,8,18,59依次存储到哈希表中。

则元素59存放在哈希表中的地址是:A.8 B.9 C.10 D.119.如果线性表用链表实现,下面所列的算法中哪一种算法对线性表排序速度最快:A.简单选择排序 B.归并排序 C.插入排序 D.快速排序10.设矩阵A是某个有向图的邻接矩阵(0-1矩阵),矩阵B是m个A相乘,即B=A m=[b jk]。

数据结构课后习题答案详解(C语言版_严蔚敏) 2

数据结构课后习题答案详解(C语言版_严蔚敏) 2

数据结构习题集答案(C语言版严蔚敏)第2章线性表2.1 描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。

解:头指针是指向链表中第一个结点的指针。

首元结点是指链表中存储第一个数据元素的结点。

头结点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为了方便对链表的操作。

它可以对空表、非空表以及首元结点的操作进行统一处理。

2.2 填空题。

解:(1) 在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与元素在表中的位置有关。

(2) 顺序表中逻辑上相邻的元素的物理位置必定紧邻。

单链表中逻辑上相邻的元素的物理位置不一定紧邻。

(3) 在单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的链域的值指示。

(4) 在单链表中设置头结点的作用是插入和删除首元结点时不用进行特殊处理。

2.3 在什么情况下用顺序表比链表好?解:当线性表的数据元素在物理位置上是连续存储的时候,用顺序表比用链表好,其特点是可以进行随机存取。

2.4 对以下单链表分别执行下列各程序段,并画出结果示意图。

解:2.5 画出执行下列各行语句后各指针及链表的示意图。

L=(LinkList)malloc(sizeof(LNode)); P=L;for(i=1;i<=4;i++){P->next=(LinkList)malloc(sizeof(LNode));P=P->next; P->data=i*2-1;}P->next=NULL;for(i=4;i>=1;i--) Ins_LinkList(L,i+1,i*2);for(i=1;i<=3;i++) Del_LinkList(L,i);解:2.6 已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。

a. 在P结点后插入S结点的语句序列是__________________。

《数据结构》习题集

《数据结构》习题集

《数据结构》习题集第一章序论思考题:1。

1简述下列术语:数据、数据元素、数据对象、数据结构、存储结构、数据类型、抽象数据类型作业题:1。

2设有数据结构(D,R),其中D={d1, d2, d3, d4}R={r1,r2}r1={<d1, d2〉,<d2,d3>,<d3,d4〉,〈d1, d4>,〈d4,d2>, 〈d4, d1〉}r2={(d1, d2),(d1,d3),(d1, d4),(d2, d4), (d2, d3)}试绘出其逻辑结构示意图。

1。

3设n是正整数。

试写出下列程序段中用记号“△”标注的语句的频度: (1)i=1; k=0;while(i〈=n-1){△k+=10*i;i++;}(2) i=1; k=0;do {△k+=10*i;i++;}while(i〈=n-1)(3)i=1; k=0;do {△k+ = 10*i; i++;}while(i==n);(4) i=1; j=0;while(i+j≤n) {△if(i〈j) i++;else j++;}(5) x=n; y=0; //n是不小于1的常数while(x〉=(y+1)*(y+1)){△y++;}(6)x=91; y=100;while ( y>0 ){△if(x>100) { x—=10; y——; }else x++ ;}(7) for( i=0; i〈n; i++)for( j=i; j〈n; j++)for( k=j; k〈n; k++)△x+=2;1。

4 试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值。

1.5 已知k阶斐波那契序列的定义为:f0=0,f1=0,……,f k—2=0,f k—1=1;f n=f n—1+f n-2+……+f n-k, n=k,k+1,……试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。

数据结构考试题9

数据结构考试题9

要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号。

每张答题纸都要写上姓名和学号。

一、单项选择题(每小题2分,共20小题,共计40分)1、设n是描述问题规模的非负整数,下面程序片段的时间复杂度为()。

x=1;while (x<=n)x=5*x;A. O(log5n)B.O(n)C.O(n log5n)D.O(n5)2、顺序表和链表相比存储密度较大,这是因为()。

A.顺序表的存储空间是预先分配的B.顺序表不需要增加指针来表示元素之间的逻辑关系C.链表中所有节点的地址是连续的D.顺序表中所有元素的存储地址是不连续的3、在长度为n(n≥1)的循环双链表L中,在尾节点之后插入一个新节点的时间复杂度为()。

A. O(n2)B.O(n)C. O(1)D.O(n log2n)4、设栈的输入序列是1、2、3、4,则()不可能是其出栈序列。

A.1,2,4,3B.2,1,3,4C.1,4,3,2D.4,3,1,25、当用一个数组data[0..n-1]存放栈中元素时,栈底最好()。

A. 设置在data[0]或data[n-1]处B.设置在data[n-1]处C. 设置在data[0]处D.设置在data数组的任何位置6、在数据处理过程中常需要保存一些中间数据,如果先保存的数据先处理,则使用()来保存这些数据。

A.线性表B. 队列C. 栈D.单链表7、在环形队列中,元素的排列顺序()。

A.与队头和队尾指针的取值有关B.与元素值的大小有关C.由元素进队的先后顺序确定D.与存放队中元素的数组大小有关8、将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()。

A.100B.40C.80D.559、设目标串为s,模式串为是t,在KMP模式匹配中,next[4]=2的含义是()。

A.表示t4字符前面最多有2个字符和开头的2个字符相同B.表示s4字符前面最多有2个字符和开头的2个字符相同C.表示目标串匹配失败的位置是i=4D.表示模式串匹配失败的位置是j=210、由权值分别为9、2、7、5的四个叶子节点构造一棵哈夫曼树,该树的带权路径长度为()。

专业课计算机科学模拟题2020年(78)_真题-无答案

专业课计算机科学模拟题2020年(78)_真题-无答案

专业课计算机科学模拟题2020年(78)(总分150,考试时间180分钟)单项选择题1. 1.若某线性表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则下面最节省运算时间的存储方式是( )。

A. 单链表B. 带有头指针的单循环链表C. 双链表D. 带有尾指针的单循环链表2. 2.已知两个长度分别为l和s的降序链表,若将它们合并为一个长度为l+s的升序链表,则最坏情况下的时间复杂度是( )。

A. D(l)B. D(ls)C. D(min(l,s))D. D(max(l,s))3. 3.线性表中存放的主要是( )。

A. 整型常量B. 字符C. 数据元素D. 信息元素4. 4.下面的叙述中正确的是( )。

I.线性表在链式存储时,查找第i个元素的时间同i的值成正比Ⅱ.线性表在链式存储时,查找第i个元素的时间同i的值无关Ⅲ.线性表在顺序存储时,查找第i个元素的时间同i的值成正比A. 仅ⅠB. 仅ⅡC. 仅ⅢD. Ⅰ、Ⅱ、Ⅲ5. 5.对于某线性表来说,主要的操作是存取任一指定序号的元素和在最后进行插入运算,那么应该选择( )存储方式最节省时间。

A. 顺序表B. 双链表C. 带头结点的双循环链表D. 单循环链表6. 6.若线性表最常用的运算是查找第i个元素及其前驱的值,则下列存储方式中最节省时间的是( )。

A. 单链表B. 双链表C. 单循环链表D. 顺序表7. 7.如果线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。

A. 单链表B. 仅有头指针的单循环链表C. 双链表D. 仅有尾指针的单循环链表8. 8.算法的时间复杂度取决于( )。

A. 问题的规模B. 待处理数据的初态C. A和BD. 以上都不正确9. 9.关于链表的特点,下面的叙述中不正确的是( )。

A. 插入、删除运算方便B. 可实现随机访问任一元素C. 不必事先估计存储空间D. 所需空间与线性长度成正比10. 10.设线性表中有2n个元素,以下操作中,在单链表上实现要比在顺序表上实现效率更高的是( )。

数据结构模拟试卷和答案

数据结构模拟试卷和答案

北京语言大学网络教育学院《数据结构》模拟试卷一注意:1.试卷保密,考生不得将试卷带出考场或撕页,否则成绩作废。

请监考老师负责监督。

2.请各位考生注意考试纪律,考试作弊全部成绩以零分计算。

3.本试卷满分100分,答题时间为90分钟。

4.本试卷分为试题卷和答题卷,所有答案必须答在答题卷上,答在试题卷上不给分。

一、【单项选择题】(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在答题卷相应题号处。

1、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则采用()存储方式最节省时间。

[A] 顺序表[B] 双链表[C]带头结点的双循环链表[D] 单循环链表2、队列操作的原则是()。

[A] 只能进行删除[B] 后进先出[C]只能进行插入[D] 先进先出3、某二叉树的先序序列和后序序列正好相反,则该二叉树一定是()的二叉树。

[A] 空或只有一个结点[B] 高度等于其结点数[C]任一结点无左孩子[D] 任一结点无右孩子4、在下列排序方法中,()方法平均时间复杂度为0(nlogn),最坏情况下时间复杂度为0(n2)。

[A] 插入排序[B] 希尔排序[C] 快速排序[D] 堆排序5、对二叉树从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一个结点的左、右孩子中,其左孩子编号小于右孩子编号。

则可采用()次序的遍历实现编号。

[A] 先序[B] 中序[C]后序[D] 从根开始的层次遍历6、若用数组S[n]作为两个栈S1和S2的共用存储结构,对任何一个栈,只有当S[n]全满时才不能作入栈操作。

为这两个栈分配空间的最佳方案是()。

[A] S1的栈底位置为0,S2的栈底位置为n[B] S1的栈底位置为-1,S2的栈底位置为n/2[C] S1的栈底位置为0,S2的栈底位置为n-1[D] S1的栈底位置为0,S2的栈底位置为n/27、对一棵二叉排序树进行()遍历,可以得到该二叉树的所有结点按值从小到大排列的序列。

南京航空航天大学829计算机专业基础2013—2018年考研真题试题

南京航空航天大学829计算机专业基础2013—2018年考研真题试题

南京航空航天大学2013年硕士研究生入学考试初试试题A 卷科目代码: 829科目名称:计算机专业基础满分: 150分注意: ①认真阅读答题纸上的注意事项;②所有答案必须写在答题纸上,写在本试题纸或草稿纸上均无效;③本试题纸须随答题纸一起装入试题袋中交回!(一、数据结构部分 50分)1.(1)(2分)推导二叉树的性质3:度为2的结点数与度为0的结点数的关系。

(2)(3分)推导二叉树的性质4:求解N 个结点完全二叉树的高度。

(3)(5分))将关键字序列(75,24, 8,10,28,64,16,35)存储在长度为10的哈希表中,使用哈希函数H(key) = Key % 10,并采用二次探测再散列法解决冲突,说明关键字存储位置的计算方法,画出哈希表示意图。

2.(10分)试用Dijkstra 算法,求下图中从V1到其余各顶点的最短路径,写出算法过程中每一步的状态。

3.(10分)设稀疏矩阵用三元组顺序表存储,用下面例子说明快速转置算法的执行过程。

A 5×6=((1,3,8),(1,5,68),(3,1,12),(3,4,52),(3,5,3),(4,1,45),(5,1,26)) 4.(10分)已知有两个带头结点的单链表A 和B,元素值递增有序,编写函数,调整删减A 链表,使A 链表结点的元素值为A、B 的交集,并成为一个递减有序的单链表。

要求先给出算法思想,再写出相应代码。

5.(10分)编写函数,用非递归方法,求二叉链表表示的二叉树T 的高度。

要求先给出算法思想,再写出相应代码。

(二、操作系统部分 50分)1.简答题(20分,每题5分)(1) 为什么要引入线程,线程和进程有何区别?V2V 4V5V6 V 1V 3123137 7 516(2) 什么是通道,通道经常采用如图所示的交叉连接,为什么?通道1存储器控制器1控制器2通道2I/O设备1 I/O设备2 I/O设备3 I/O设备4(3)简述操作系统引入缓冲的原因?(4)何谓文件的物理结构,可分为哪几类,有何优缺点?2.(10分)假设有个南北向的胡同很窄,仅能容同方向的人顺序走过,相对方向的两个人则无法通过。

山东师范大学数据结构考研真题

山东师范大学数据结构考研真题

第1章绪论一、选择题1. 算法的时间复杂度取决于( C )A.问题的规模 B. 待处理数据的初态 C. A和B2.计算机算法指的是(C),它必须具备(B)这三个特性。

(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性3.从逻辑上可以把数据结构分为( C )两大类。

A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构4.以下与数据的存储结构无关的术语是( D )。

A.循环队列 B. 链表 C. 哈希表 D. 栈5.在下面的程序段中,对x的赋值语句的频度为( C )FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A. O(2n) B.O(n) C.O(n2) D.O(log2n)6.连续存储设计时,存储单元的地址( A )。

A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续二、判断题1. 数据元素是数据的最小单位。

( F ) 【山东师范大学 2001 一、1 (2分)】2. 记录是数据处理的最小单位。

( F )3.数据的物理结构是指数据在计算机内的实际存储形式。

( T )【山东师范大学2001 一、2(2分)】4. 在顺序存储结构中,有时也存储数据结构中元素之间的关系。

( F )5. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

( F )三、填空1.数据的物理结构包括的表示和的表示。

2. 对于给定的n个元素,可以构造出的逻辑结构有(1),(2),(3),_(4)四种。

3.数据的逻辑结构是指。

4.一个数据结构在计算机中称为存储结构。

5.数据结构中评价算法的两个重要指标是6.已知如下程序段FOR i:= n DOWNTO 1 DO {语句1}BEGINx:=x+1;{语句2}FOR j:=n DOWNTO i DO {语句3}y:=y+1; {语句4}END;语句1执行的频度为(1);语句2执行的频度为(2);语句3执行的频度为(3);语句4执行的频度为(4)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
print(C);//输出单链表C
}
B=CreateLinkList();//生成单链表B
printf("Output list B:\n");
print(B);//输出单链表B
printf("Make list C:\n");
Merge(A,B,&C);//将升序链表A、B合并成降序链表C
printf("Output list C:\n");
p->next=NULL;
q->next=p;//在链尾插入
q=p;
}
return head;//返回指向单链表的头指针head
}
void Merge(LNode *A,LNode *B,LNode **C)
{ //将升序链表A、B合并成降序链表*C
LNode *p,*q,*s;
p=A->nex
LNode *A,*B,*C;
printf("Input data of list A:\n");
A=CreateLinkList();//生成单链表A
printf("Output list A:\n");
print(A);//输出单链表A
printf("Input data of list B:\n");
将递增有序的单链表A和B合并成递减有序的单链表C
实现程序如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
char data;//data为结点的数据信息
struct node *next;//next为指向后继结点的指针
}LNode;//单链表结点类型
{
s=p;
p=p->next;
}
else
{
s=q;
q=q->next;
}
s->next=(*C)->next; //用头插法将结点*s插到链表*C的头结点之后
(*C)->next=s;
}
if(p==NULL)//如果指向链表A的指针*p为空,则使*p指向链表B
p=q;
while(p!=NULL) //将*p所指链表中的剩余结点依次摘下插入的链表C的链首
scanf("%d", &n);//读入结点数据
printf("Input data of list: \n");
for(i=1;i<=n;i++)//生成链表的数据结点
{
p=(LNode *)malloc(sizeof(LNode));//申请一个结点空间
scanf("%d",&p->data);
{
s=p;
p=p->next;
s->next=(*C)->next;
(*C)->next=s;
}
}
void print(LNode *p)//输出单链表
{
p=p->next;
while(p!=NULL)
{
printf("%d,",p->data);
p=p->next;
}
printf("\n");
}
void main()
LNode *CreateLinkList()//生成单链表
{
LNode *head,*p,*q;
int i,n;
head=(LNode*)malloc(sizeof(LNode));//生成头结点
head->next=NULL ;
p=head;
q=p;//指针q始终指向链尾结点
printf("Input length of list: \n");
q=B->next;// q始终指向链表B的第一个未比较的数据结点
*C=A;//生成链表的*C的头结点
(*C)->next=NULL;
free(B); //回收链表B的头结点空间
while(p!=NULL&&q!=NULL) //将A、B两链表中当前比较结点中值小者赋给*s
{
if(p->data<q->data)
相关文档
最新文档