数据结构副本 - 半期测试

合集下载

国开电大2023年春季期末考试《数据结构》试题(试卷代号1252)

国开电大2023年春季期末考试《数据结构》试题(试卷代号1252)

国家开放大学2023年春季学期期末统一考试数据结构(本)试题一、单项选择题(把合适的选项编号填写在括号内。

每小题3分,共45分)1.线性结构、树形结构、图形结构都是按数据的( )来分类的。

A.存储结构B.物理和存储结构C.物理结构D.逻辑结构2.在数据结构中,从逻辑上可以把数据结构分为( ).A.动态结构和静态结构B.紧凑结构和非紧凑结构C.内部结构和外部结构D.线性结构和非线性结构3.设有一个长度为n的顺序表,要删除第i个元素,则需移动元素的个数为( )。

A. iB. n-i-1C. n-iD. n-i+14.设有一个长度为10的顺序表,要在第3个元素之后插入一个元素,则需移动元素的个数为( ).A.3B.6C. 7D.85.一个队列的人队序列是10,20 ,30,40。

则队列的输出序列是( ).A.40,30,20,10B.10,20,30,40C.10.40,30,20D.30 ,20,40,106.在一棵二叉树中(其根结点编号为1),若编号为8的结点存在右孩子,则该右孩子的顺序编号为( )。

A.18B.16C.15D.177.队列的出队操作在( )进行。

A.队头B.队尾C.任意位置D.指定位置8.串函数index(a ,b)的功能是进行( )。

A.求子串B.串连接C.模式匹配D.求串长9.一个非空广义表的表头元素( )。

A.不可能是原子B.只能是子表C.只能是原子D.可以是子表或原子10.链表所具备的特点之一是( )。

A.可以随机访问任一结点B.需要占用连续的存储空间.C.插人元素的操作不需要移动元索D.删除元素的操作需要移动元素11.树中所有结点数等于所有结点的度加( )。

A.1B.0C. 2D. -112.在一个无向图G中,所有边数之和等于的所有顶点的度数之和( )倍。

A.1/2B. 1C.2D.413.对于一个具有4个顶点和5条边的无向图,若采用邻接表表示,则所有顶点邻接表中的结点总数为( )。

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案第一部分:选择题(每题2分,共20分)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. 堆第二部分:填空题(每题2分,共20分)1. 链表是一种______数据结构。

2. 二叉树的节点最多有______个子节点。

3. 堆是一种特殊的______。

4. 散列表的查找效率取决于______。

5. 图的遍历算法包括______和______。

6. 快速排序算法的平均时间复杂度为______。

7. 哈希表中的冲突解决方法有______和______。

8. 最小树算法包括______和______。

9. 最短路径算法包括______和______。

10. 并查集算法用于解决______问题。

第三部分:简答题(每题10分,共50分)1. 请简述栈和队列的区别。

2. 请简述二叉搜索树的特点。

3. 请简述哈希表的原理。

4. 请简述图的深度优先搜索算法。

5. 请简述最小树算法的原理。

第四部分:编程题(每题20分,共50分)1. 编写一个函数,实现链表的插入操作。

数据结构期中考试试题及答案

数据结构期中考试试题及答案

2014-2015学年第二学期《数据结构与算法》期中考试学号:姓名:一、写语句1.设单链表结点指针域为next,试写出删除链表中指针p所指结点的直接后继的C语言语句。

2.设单链表中某指针p所指结点(即p结点)的数据域为data,链指针域为next,请写出在p结点之前插入s结点的操作3. 设双向循环链表中结点的数据域、前驱和后继指针域分别为data,pre和next,试写出在指针p 所指结点之前插入s结点的C语言描述语句。

4. 一线性表存储在带头结点的双向循环链表中,L为头指针。

如下算法:(1)说明该算法的功能。

(2)在空缺处填写相应的语句。

void unknown (BNODETP *L){ …p=L->next; q=p->next; r=q->next;while (q!=L){ while (p!=L) && (p->data>q->data) p=p->prior;q->prior->next=r;(1) ______;q->next=p->next;q->prior=p;(2) ______;(3) ______;q=r;p=q->prior;(4) ______;} }二、写算法1.设有一个正整数序列组成的有序单链表(按递增次序有序,且允许有相等的整数存在),试编写能实现下列功能的算法:(要求用最少的时间和最小的空间)(1)确定在序列中比正整数x大的数有几个(相同的数只计算一次,如序列{20,20,17,16,15,15,11,10,8,7,7,5,4}中比10大的数有5个);(2) 在单链表将比正整数x小的数按递减次序排列;(3) 将正整数(比)x大的偶数从单链表中删除。

2. 设键盘输入n个英语单词,输入格式为n, w1, w2, …,wn,其中n表示随后输入英语单词个数,试编一程序,建立一个单向链表,实现:(1)如果单词重复出现,则只在链表上保留一个。

数据结构期中试卷A参考答案

数据结构期中试卷A参考答案

北京航空航天大学北海学院课程考试试卷答案要点及评分细则课程名称:《数据结构》考试班级:软件与信息工程学院卷别:_A 命题教师签名: 年 月 日1、 单项选择题(本题共15小题,每小题2分,共30分)123456789101112131415C AD B C B D D C A D C A C B2、 判断正误题(本题共10小题,每小题1分,共10分)1.X,2.X,3.√,4.√,5.X,6.X,7.X,8.√,9.X, 10.√3、 填空题(本题共6小题10个空,每空2分,共20分)(1) O(n)(2) O(n)(3) O(1)(4) 求模式串在主串中首次出现的位置的运算,即求主串中左起第一个与模 式串相等的子串的首字符在主串中的位置。

(5) (Q.rear-Q.front+Max)% Max(6) 4(7) n2log n,n3, 2n(8) n→∞时n3/(n2log n)→∞, 2n/(n3)→∞(9) 为空(10) 出队四、简答题:(本题共4小题,1,2小题各4分,3,4小题各6分,共20分)1.1) 确定性指描述无二义性,相同条件下执行的路线和结果都是唯一的。

2) 输入可以有0至多个从算法外部接受的输入。

2. 该缓冲区应该采用队列结构。

其主要特点是先进先出。

3. 顺序表:O(n),单循环链表:O(n),顺序栈:O(1),循环队列:O(1),链栈:O(1),链队列:O(1)。

4. 优点:①随机访问,简捷;②只存数据,局部空间利用率高;缺点:①逻辑关系靠地址表达,插入删除造成大量元素移动;②要求连续存储空间,固定长度,不便扩充;③须预先按最大可能分配,但闲置多,按整体看空间利用率低。

五、设计题(本题共3小题,第1小题2分,第2小题8分,第3小题10分,共20 分)1. typedef struct node{datatype data;struct node *next;}node;2.(1). s->next = head->next; head->next = s;(2). s->next = head; head = s;3. 答案1:采用尾指针表示、带头结点的单循环链表。

数据结构期中试题

数据结构期中试题

河北北方学院2012-2013学年第一学期期中考试试卷 《数据结构》 (供11级计算机科学与技术使用) 注意事项: 1.请按要求在试卷的密封区填写专业、班级、姓名和学号。

2.请仔细阅读各种题目的答题要求,在规定的位置填写答案。

3.不要在试卷上乱写乱画,不要在密封区填写无关的内容。

总分合计人: 复核人: 一、单选题 (每题2分,共30分) 1、下列算法是时间复杂度是___。

for(i=0;i<n;i++) for(j=0;j<n;j++) c[i][j]=i+j; A ) O (1) B)O (n ) C) O (log 2n )D ) D)O (n2) 2、算法指的是___。

A)计算机程序 B)解决问题的答案 C)排序算法 D)解决问题的有限运算序列 3、下面关于线性表的叙述中,错误的是___。

A)线性表采用顺序存储,必须占用一片连续的存储单元。

B)线性表采用顺序存储,便于进行插入和删除操作。

C)线性表采用链接存储,不必占用一片连续的存储单元。

D)线性表采用链接存储,便于插入和删除操作。

4、链接存储的存储结构所占存储空间:___。

A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 B)只有一部分,存放结点值专业________ 班级________ 姓名__________学号________ ………………………………………密…………………………………封………………………………………线……………………………………………C)只有一部分,存储表示结点间关系的指针D)分两部分,一部分存放结点值,另一部分存放结点所占单元数5、在n 个结点的顺序表中,算法的时间复杂度是O (1)的操作是___。

A)访问第i 个结点(1≤i ≤n )和求第i 个结点的直接前驱(2≤i ≤n )B)在第i 个结点后插入一个新结点(1≤i ≤n )C)删除第i 个结点(1≤i ≤n ) D)将n 个结点从小到大排序6、线性表若采用链式存储结构时,要求内存中可用存储单元的地址 ___。

ETemp014数据结构期中测验

ETemp014数据结构期中测验

2014数据结构期中测验试卷一、选择题(每空题2分共30分)1.下列关于算法的说法,正确的是()。

A.程序一定是算法。

B.算法的可行性是指指令不能有二义性。

C.算法可以没有输入但必须有1个以上的输出。

D.算法必须是用计算机语言描述的。

2.从一个具有n个结点的单链表中查找值为x结点,在查找成功情况下,需平均比较()个结点。

A. n B. n/2 C. (n-1)/2 D. (n+1)/23.带头结点的单链表head为空的判定条件是( )。

A. head= =NULL B. head->next==NULLC. head->next= =head D. head!=NULL4. 循环队列存储在数组A[0..m]中,则入队时的操作为()。

A. rear=rear+1B. rear=(rear+1) mod (m-1)C. rear=(rear+1)mod mD. rear=(rear+1)mod(m+1)5. 广义表L=((a,b,c))的长度和深度分别是()。

A.1和1B.1和3C.1和2D.2和36.广义表运算式Tail(((a,b),(c,d)))的操作结果是()。

A.(c,d) B.c,d C.((c,d)) D.()7.表达式a*(b+c)-d的后缀表达式是()。

A.abcd*+- B.abc+*d- C.abc*+d- D.-+*abcd8.设n阶方阵A是一对称矩阵,为节省存储空间,将其下三角(包括对角线)以行序为主序存储在一维数组B(1: n(n+1)/2)中,则对任一上三角元素aij(i<j,1≤i≤n,1≤j≤n),其在一维数组B中的下标位置k是()。

A.i(i-1)/2+j B.j(j-1)/2+i C.i(j-1)/2+1 D.j(i-1)/2+19.广义表((a))的表头是()。

A.a B.(a) C.() D.((a))10.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

12级数据结构期中复习练习题

12级数据结构期中复习练习题数据结构期中复习题期中考试主要前三章内容,要求看懂教材,会作本复习题的全部习题一.判断题(√)1.数据的逻辑结构与数据元素本身的内容和形式无关。

(ㄨ)2.线性表的链式存储结构优于顺序存储。

【顺序存储需要开辟一个定长的空间,读写速度快,缺点不可扩充容量(如果要扩充需要开辟一个新的足够大的空间把原来的数据重写进去) 链式存储无需担心容量问题,读写速度相对慢些,由于要存储下一个数据的地址所以需要的存储空间比顺序存储大。

】(√)3.将中缀表达式转换成后缀表达式是栈的重要应用。

(×)4.栈和队列都是顺序存储的线性结构。

【:链式存储的线性结构】(√)5.数据的逻辑结构是独立于计算机的。

(×)6.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此单链表是随机存取的存储结构。

【线性表分(顺序存储和链式存储)顺序存储即数组,我们使用数组的时候申请的是连续的内存空间可以直接读取的,a[24],a[25]链式存储即链表,链表中单个节点的内存地址不是连续的,而是散列在计算机中,通过next指针访问下一个节点,所以所必须遍历链表才能读取数据!总结:顺序表:顺序存储,随机读取链式:随机存储,顺序读取(必须遍历)】(√)7.栈的特点是“后进先出”。

【栈的定义:栈是一种特殊的表这种表只在表头进行插入和删除操作。

因此,表头对于栈来说具有特殊的意义,称为栈顶。

相应地,表尾称为栈底。

不含任何元素的栈称为空栈。

栈的逻辑结构:假设一个栈S中的元素为an,an-1,..,a1,则称a1为栈底元素,an为栈顶元素。

栈中的元素按a1 ,a2,..,an-1,an的次序进栈。

在任何时候,出栈的元素都是栈顶元素。

换句话说,栈的修改是按后进先出的原则进行的.因此,栈又称为后进先出(Last In First Out)表,简称为LIFO表。

所以,只要问题满足LIFO原则,就可以使用栈】(√)8.判断顺序队列为空的标准是头指针和尾指针均指向同一个结点。

级数据结构期中试卷(打印)

得分一、选择题(每小题2分,共30分)1.下面程序段的时间复杂度是( )。

for(i=0;i<2*n;i++) for(j=1;j<3*n;j++) A[i][j]=0;A .O(n); B. O(5n); C .O(6n 2); D. O(n 2).2.在存储数据时,通常不仅要存储各数据元素的值,而且要有存储( )。

A .数据的处理方法; B. 数据元素的类型; C .数据元素之间的关系; D. 数据的存储方式.3. 若某线性表最常用的操作是存取任意指定序号的元素和在最后进行插入和删除操作,则利用哪种存储方式最节省时间( )。

A .顺序表; B. 双链表; C .带头结点的双循环链表; D. 单循环链表. 4. 设单链表的长度为n ,则删除第i (1≤i ≤n )个结点的算法的时间复杂度为( )。

A .O(1); B. O(i); C .O(n); D. O(n+i).5. 有n 个结点的线性表采用顺序表作为存储结构,要在第i (1≤i ≤n+1)个位置插入一个新结点时,需要移动的结点个数为( )。

A .i ; B. n-i ; C .i-n ; D. n-i+1.6. 对于一个头指针为head 的带头结点的单链表,判断该表为空的条件是( )。

A .head==NULL ; B. head ->next==NULL ; C .head ->next==head ; D. head!=NULL.7. 在头指针为head 且表长大于1的单循环链表中,指针p 指向表中某个结点,若p->next->next=head ,则( )。

A .p 指向头结点; B. p 指向尾结点;C .*p 的直接后继是头结点; D. *p 的直接后继是尾结点. 8. 执行如下语句后,*(xp+2)的值为 int x[ ]={2,5,6,8},*xp; xp=x;A .2 ; B. 5 ; C .6 ; D. 8.9. 删除双链表中间某个结点,需要修改( )个指针域。

2023年数据结构测试卷及答案

数据结构测试卷一、判断题(每小题2.5 分,共 100分)()1、如果采用邻接表表示图,则需要n个单链表,n是顶点数。

【答案】正确()2、如果t中存在等于p的子串,就指出该子串在t中的位置,称为匹配成功;否则称为匹配失败。

【答案】正确()3、归并排序的时间复杂度为O(nlogn)【答案】正确()4、(3分)选择好的哈希函数就可以避免冲突的发生。

(×)【答案】错误()5、广义表中原子个数即为广义表的长度。

【答案】错误()6、栈是线性表的特例,是指元素先进后出【答案】错误()7、为了很方便的插入和删除数据,可以使用链表存放数据。

【答案】正确()8、子串的定位运算称为串的模式匹配。

【答案】正确()9、线性表的逻辑顺序和存储顺序总是一致的。

【答案】错误()10、线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型【答案】错误【解析】错,混淆了逻辑结构与物理结构,链表也是线性表。

()11、在线性表的顺序储存结构中,实际上相邻的两个元素在物理位置上不一定紧邻。

【答案】错误()12、算法分析的前提是算法的时空效率高。

【答案】错误()13、数据元素是3有独立含义的、不可分割的最小单位。

【答案】错误()14、算法的五个特性为:有穷性、输入、输出、可行性和确定性。

【答案】正确【解析】请编写题目解析(选填)()15、存储图的邻接矩阵中,邻接矩阵的大小不但与图的顶点个数有关,而且与图的边数也有关。

【答案】错误()16、有n个顶点的完全无向图有n*n条边。

【答案】错误()17、任意两个顶点都是连通的无向图,称之为连通图。

【答案】正确()18、哈夫曼树中,非叶子结点的权值等于以该结点为根的子树的所有结点权值之和。

【答案】错误()19、在邻接矩阵中,有向图的顶点的入度等于第i行元素之和。

【答案】错误()20、高度为k的二叉树中最多有2^k - 1个结点(k≥0)【答案】正确()21、带权无向图的最小生成树必是唯一的。

数据结构阶段测评一

数据结构导论-阶段测评(1)成绩:100分一、单选题共25 题题号: 1 本题分数:4 分顺序表是线性表的()A、链式存储结构B、顺序存储结构C、索引存储结构D、散列存储结构题号: 2 除了(),其他任何指针都不能在算法中作为常量出现,也无法显示。

A、头指针B、尾指针C、指针型变量D、空指针题号: 3 用单链表方式存储的线性表,存储每个结点需要两个域,一个是数据域,另一个是()A、当前结点所在地址域B、指针域C、空指针域D、空闲域题号: 4 指针的作用是()A、指向某常量B、指向某变量C、指向某结D、存储某数据题号: 5对于线性表基本运算,以下解释正确的是()A、初始化INITIATE(L),引用型运算,其作用是建立一个空表L=¢B、求表长LENGTH(L),引用型运算,其结果是线性表L的长度C、定位LOCATE(L,X),引用型运算。

若L中存在一个或多个值与X相等的结点,运算结果为这些结的序号的最大值。

否则,运算结果为0D、插入INSERT(L,X,i),加工型运算。

其作用是在线性表L的第i+1个位置上增加一个以X为值的新结点题号: 6 线性结构中的一个结点代表一个()A、数据元素B、数据项C、数据D、数据结构题号: 7 从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较()个结点。

A、nB、n/2C、(n-1)/2D、(n+1)/2题号: 8 设C语言数组Data[m+1]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为()A、front=front+1B、front=(front+1)%mC、rear=(rear+1)%mD、front=(front+1)%(m+1)题号: 9 若已知一个栈的输入序列为1,2,3,…,n,其输出序列为$P_1$,$P_2$,…,$P_n$。

若$P_n$=n,则$P_1$为()A、IB、n=IC、n-i+1D、不确定题号: 10 在一个链队中,若f、r分别为队首、队尾指针,则插入s所指结点的操作为(B)题号: 11设计一个判别表达式中左、右括号是否配对出现的算法,采用()数据结构最佳。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

有序顺序表的合并操作的实现941 #include #include using namespace std; typedef struct { int data[100]; int length; }sqlist; void crearelist(sqlist *&L,int a[],int n) { int i; L=(sqlist *)malloc(sizeof(sqlist)); for(i=0;iL->data[i]=a[i]; L->length=n; } void initlist(sqlist *&L) { L=(sqlist *)malloc(sizeof(sqlist)); L->length=0; } void displist(sqlist *L) { int i; for(i=0;ilength-1;i++) coutdata[i]>L->data[i+1]) {k=L->data[i];L->data[i]=L->data[i+1];L->data[i+1]=k;} } }

int main() { sqlist *L1,*L2,*L3; initlist(L1); initlist(L2); initlist(L3); int i,m,t,b[50],c[50],d[100]; cin>>m; for(i=0;icin>>b[i]; crearelist(L1,b,m); cin>>t; for(i=0;icin>>c[i]; crearelist(L2,c,t); for(i=0;id[i]=b[i]; for(i=0;id[m+i]=c[i]; crearelist(L3,d,m+t); paixu(L3); displist(L3); return 0; } 逆置顺序表942 #include #include using namespace std; typedef struct { char data[100]; int length; }sqlist; void crearelist(sqlist *&L,char a[],int n) { int i; L=(sqlist *)malloc(sizeof(sqlist)); for(i=0;iL->data[i]=a[i]; L->length=n; } void initlist(sqlist *&L) { L=(sqlist *)malloc(sizeof(sqlist)); L->length=0; } void displist(sqlist *L) { int i; for(i=L->length-1;i>0;i--) cout

int main() { sqlist *L1; initlist(L1); int i,m; char b[50]; cin>>m; for(i=0;icin>>b[i]; crearelist(L1,b,m); displist(L1); return 0; }

顺序表插入操作的实现943 #include #include using namespace std; typedef struct { int data[100]; int length; }sqlist; void crearelist(sqlist *&L,int a[],int n) { int i; L=(sqlist *)malloc(sizeof(sqlist)); for(i=0;iL->data[i]=a[i]; L->length=n; } void initlist(sqlist *&L) { L=(sqlist *)malloc(sizeof(sqlist)); L->length=0; } void displist(sqlist *L,int n,int k) { int i,flag=0; for(i=0;ilength;i++) { if(L->data[i]==n) { flag=flag+1; cout<} if(ilength-1) cout>m; for(i=0;icin>>b[i]; crearelist(L1,b,m); cin>>t; cin>>c; displist(L1,t,c); return 0; }

单链表的插入操作的实现952 #include using namespace std; #include typedef struct Node { int data; struct Node *next; } Node; void Create(Node *&L,int a[],int n) { Node *s,*r; int i; L=(Node *)malloc(sizeof(Node)); r=L; for(i=0;i{ s=(Node *)malloc(sizeof(Node)); s->data=a[i]; r->next=s; r=s; } r->next=NULL; } void print(Node *L) { Node *s; s=L->next; coutnext; while(s!=NULL) { cout<<" "next; } } void charu(Node *&L,int i,int e) { int j=0; Node *p,*s; p=L; while(jnext!=NULL) { j++; p=p->next; } s=(Node *)malloc(sizeof(Node)); s->data=e; s->next=p->next; p->next=s; } int main() { int i,e,n,m; int a[1000]; Node *head; cin>>n; for(i=0;i{ cin>>a[i]; } Create(head,a,n); cin>>m>>e; if(m>n||m<1) { cout<<"error!"; return 0; } charu(head,m,e); print(head); return 0; }

单链表的删除操作的实现953 #include #include #include using namespace std; typedef struct node { int data; node *next; }Node; void init(Node *&L) { L=(Node *)malloc(sizeof(Node)); L->next=NULL; } void create(Node *&L,int a[],int n) { int i; Node *p,*q; init(L); q=L; for(i=0;i{ p=(Node *)malloc(sizeof(Node)); p->data=a[i]; p->next=NULL; q->next=p; q=p;

相关文档
最新文档