数据结构期中考试试卷答案
数据结构期中笔试题答案
《数据结构》期中考试题答案一、填空题(20分,每题2分)1.逻辑结构、存储结构2.便于插入和删除操作3.方便运算的实现4.算法执行过程中所需要的基本运算次数5.存储结构6.q.next=p.next ; p.next=q7.递归算法8.抽象类或接口二、选择题(30分,每题2分)AACBB BDDCB AACAC三、问答题(50分,每题10分)1.什么是栈和队列?两者有何异同?答:栈和队列都属于线性表结构,它们是两种特殊的线性表,栈的插入和删除操作都在线性表的一端进行,所以栈的特点是“后进先出”;而队列的插入和删除操作分别在线性表的两端进行,所以队列的特点是“先进先出”。
2.采用顺序存储结构的栈和队列,在进行插入、删除操作时需要移动数据元素吗?为什么?答:采用顺序存储结构的栈和队列,在进行插入、删除操作时不需要移动数据元素,因为栈和队列均不能进行中间插入、删除操作。
3.什么是队列的假溢出?为什么顺序存储结构队列会出现假溢出?怎样解决队列的假溢出问题?链式存储结构队列会出现假溢出吗?答:顺序队列,当入队的元素个数(包括已出队元素)超过数组容量时,队列尾下标越界,数据溢出。
此时,由于之前已有若干元素出队,数组前部已空出许多存储单元,所以,这种溢出并不是因存储空间不够而产生的,称之为假溢出。
顺序队列之所以会产生假溢出现象,是因为顺序队列的存储单元没有重复使用机制。
解决的办法是将顺序队列设计成循环结构。
链式存储结构队列不会出现假溢出。
因为每次元素入队,都要申请新结点,数据不会溢出。
4.答案:(1) (a2, a4, …, ) (2)将单链表中偶数结点位置的元素值写入顺序表list5.数据的存储结构有哪两种,各有什么特点?答:数据存储结构的基本形式有两种:顺序存储结构和链式存储结构。
顺序存储结构使用一组连续的内存单元依次存放数据元素,元素在内存中的物理存储次序与它们的逻辑次序相同。
链式存储结构使用若干地址分散的存储单元存储数据元素,逻辑上相邻的数据元素在物理位置上不一定相邻,数据元素间的关系需要采用附加信息特别指定。
数据结构期中考试试题及答案
一、单项选择题(本题总分 20分,每题 2分)在每小题列出的四个选项中只有 一个选项是符合题目要求的,请将正确选项前的字母。
1.若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为( D ) 。
A.顺序表 B.链表 C.索引表 D.散列表采用排除法,顺序表存储位置表示数据元素的顺序关系,跟关键字无法;链表的地址是动态分配的;索引表是 按数据元素的关键字排序所得,它的数据元素是没有规律的2.在长度为 n 的顺序表的第 i(1≤i ≤n+1)个位置上插入一个元素,元素的移动次数为( A ) 。
A.n -i+1B.n -iC.iD.i -1代入计算法,我们知道在 i=n+1 时不需要移动元素3.若一棵二叉树的先序遍历序列为 a,b,c ,则由 abc 三个结点构成的二叉树个数为( B ) 。
A.4B.5C.6D.74.三维数组 A[4][5][6]按行优先存储方法存储在内存中,若每个元素占 2 个存储单元,且数组中第一个元素的存 储地址为 130,则元素 A[3][4][5]的存储地址为(B A.370B .368C .366) 。
D.372Loc(3,4,5)=loc(0,0,0)+(3*5*6+4*6+5)*2=130+119*2=368;5.高度为 h 的二叉树(仅含根结点的二叉树高度为 1)的结点最少是多少( D) 。
A. h+1B. 2hC. 2h -1D. h二叉树性质 26. 将两个各有 n 个元素的有序表归并成一个有序表,其最多的比较次数是( A. nB.n+1 C. 2n-1D. n-17. 已知一算术表达式的中缀形式为 A +B *C -D/E ,后缀形式为 ABC *+DE/-,其前缀形式为( C) 。
A )。
A. -+A*BC/DE C. -+*ABC/DEB. –A+B*CD/E D. –A+B*C/DE根据中缀和后缀表达式可画出表达树如下:- + /A* D EBC故前缀表达式为:-+A*BC/DE数据结构期中考试8.下面图示的顺序存储结构表示的二叉树是( A )。
数据结构期中小考试
数据结构期中小考试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.某程序的时间复杂度为3n+nlog2n+n^2+8,其数量级表示为()A.O(n)B.O(nlog2n)C.O(n^2)(正确答案)D.O(log2n)7.以下数据结构中哪一个是非线性结构?()A.队列B.栈C.线性表D.二叉树(正确答案)8.设顺序表有9个元素,则在第3个元素前插入一个元素所需移动元素的个数为()A.5B.6C.7(正确答案)D.99.线性表采用链式存储结构时,要求内存中可用存储单元的地址()A.必须是连续的B.必须是部分连续的C.一定是不连续的D.连续和不连续都可以(正确答案)10.线性表是具有相同数据类型的n个()的有限序列A.数据项B.数据元素(正确答案)C.表元素D.字符11.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是()A.O(1)B.O(n)(正确答案)C.O(n^2)D.O(nlog2n)12.用链接方式存储的队列,在进行插入运算时()A.仅修改头指针B.头、尾指针都要修改C.仅修改尾指针(正确答案)D.头、尾指针可能都要修改13.在长度为n的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为()A.n-i+1B.iC.i+1D.n-i(正确答案)14.若带头结点的单链表的头指针为head,则该链表为空的判定条件是()A.head==NULLB.head->next==NULL(正确答案)C.head!=NULLD.head->next==head15.已知栈的最大容量为4。
数据结构期中考试试题及答案
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)如果单词重复出现,则只在链表上保留一个。
数据结构期中考试试卷参考答案
数据结构期中考试试卷参考答案1徐州师范大学期中试卷课程名称:数据结构与算法一、单项选择1. B2. A3. B4. C 5. A 6. D 7. C 8. C 9. B 10. D 11. A 12. B 13. C 14. D 15. A 16. C 17. A 18. A 19. D 20. B二、名词解释1. 数据:是所有能被输入到计算机中,且能被计算机处理的符号的集合。
它是计算机操作的对象的总称,也是计算机处理的信息的某种特定的符号表示形式。
2. 算法:通常把具体存储结构上的操作实现步骤或过程称为算法。
3. 递归:在定义一个过程或函数时出现调用本过程或本函数的成分,称之为递归4. 时间复杂度:通常把算法中包含基本运算次数的多少称为算法的时间复杂度,也就是说,一个算法的时间复杂度是指该算法的基本运算次数。
5. 数组:数组是n(n >1)个相同类型数据元素a1,a2,…,an 构成的有限序列,且该有限序列存储在一块地址连续的内存单元中。
三、填空题(每题1分,共10分)1.有穷性、确定性、可行性、输入、输出2. n/2 插入或删除位置3. __O(1) __。
4. 以行序为主序和以列序为主序两种方式。
5. 数据数据元素。
6.元素之间逻辑关系的信息7. 长度各个对应位置上的字符 8.一定不一定。
9.头指针头结点的指针.直接前驱结点指针。
10.数据元素及其关系四、简答题1.答案:(1)结点存储密度。
顺序:结点中只有自身信息域,没有链接信息域,故存储密度大;链式:结点中除自身信息外,还有表示连接信息的指针域,存储密度小。
(2)随机存取。
顺序:可随机访问,直接存取第i 个结点信息;链式:不能随机访问.(3)插入和删除。
顺序:插入、删除,会引起大量结点的移动。
链式:插入、删除灵活方便,不必移动结点,只要改变结点中的指针值即可。
(4)预先分配存储单元.顺序:按最大预分配,存储空间利用率不高;链式:不需要预分配空间,所以存储空间利用率高。
数据结构期中考试试题答案c语言版本
R @ - * ( +
S 1 0 3 2 1 +
R@ - *
S 1 0 3 2 1 + * - 3 1
R@ + ( -
S 1 0 3 2 1 + * - 3 1 - 2
R@ + /
S 1 0 3 2 1 + * - 3 1 - 2 / +
R
S 1 0 3 2 1 + * - 3 1 - 2 / + @ \0
3.在带附加表头的循环双向链表中, 表头附加结点 的 左 指针域指向最后一个结点,最后一个结点的 右 指针域指向 表头附加 结点。
4.在以HL为表头指针的带附加结点的单链表和循环单链表中,链表为空的条件分别为
HL->next==NULL 和 HL==HL->next 。
5.在由数组a中元素结点构成的单链表中,删除下标为i的结点后,需要把该结点插入到空闲表的表头,具体操作为 a[i].next=a[1].next 、 a[1].next=i 。
8.一个广义表中的元素分为 单 元素和 表 元素两类。
9.广义表A=((a,(b,(),c),((d),e)))的长度为 1 ,深度为 4 。
10.向一个顺序栈插入一个元素时,首先应 top++ ,然后再将待插入元素 放入栈顶位置 。
11.对于队列,应在 队尾 进行插入,在 队首 进行删除。
12.中缀表达式2+7/(4-1)所对应的后缀表达式为 2 7 4 1 - / + @ 。
数据结构期中考试试题答案
一、 单选题(每小题2分,共8分)
1.在一个长度为n的线性表中顺序查找值为x的元素时,查找成功时的平均查找长度(即x同元素的平均比较次数,假定查找每个元素的概率都相等)为 C 。
数据结构期中试卷V8-附答案3B
苏州大学《数据结构》课程期中试卷共 10 页参考答案一、单项选择题(20%)1、数据结构是一门研究____的程序设计问题中,计算机的操作对象及其关系和操作等的学科。
[A]:数据类型[B]:抽象数据类型[C]:数值计算[D]:非数值计算[答案1]:D2、计算机科学知识体中,数据结构课程属于____领域的综合性专业基础课。
[A]:离散结构Discrete Structures (DS)[B]:程序设计语言Programming Languages (PL)[C]:算法与复杂性Algorithms and Complexity (AL)[D]:程序设计基础Programming Fundamentals (PF)[答案2]:D3、数据结构中,与计算机存储器无关的是数据的_____结构。
[A]:物理[B]:线性[C]:存储[D]:逻辑[答案3]:D4、数据结构可记为DS = {D, R},其中D是数据对象,R是D中所有成员之间_____的有限集合。
[A]:操作[B]:组织[C]:运算[D]:关系[答案4]:D5、具有相同性质的数据集合及在这个集合上的一组____,称为数据类型。
[A]:结构[B]:算法[C]:关系[D]:操作[答案5]:D6、数据的物理结构不包括_____。
[A]:顺序(sequence)[B]:链接(link)和数组[C]:索引(index)和散列(Hash)[D]:树(tree)和图(graph)[答案6]:D7、在n较大情况下,下列时间复杂度T(n)中,效率较高的为_____。
[A]:O(2n)[B]:O(10*n2)[C]:O(10*n)[D]:O(100*log2n)[答案7]:D8、顺序表的特点有_____。
[A]:插入、删除效率高[B]:存储空间能动态分配[C]:逻辑关系与物理位置不一致[D]:可方便随机存取数据元素[答案8]:D9、链表的特点有_____。
[A]:插入、删除效率低[B]:逻辑关系与物理位置一致[C]:存储空间不能静态分配[D]:随机存取数据元素效率低[答案9]:D10、链表用一组任意的存储单元来依次存放线性表的结点,这组存储单元_____。
数据结构期中测试题答案
《数据结构》期中测试班级:姓名:学号:一、填空题:1、在数据结构中,从逻辑上可以把数据结构分为集合、线性结构、树形结构和图状结构,其中树形结构和图状结构合称为非线性结构。
数据结构被形式地定义为二元组(D,S),其中D是数据元素的有限集合,S是D上关系的有限集合。
2、算法的五个重要特性是有穷性、确定性、可行性、输入和输出。
3、一个顺序表第一个元素的存储地址是100,每个元素的长度为3,则第6个元素的地址是115。
在顺序表中插入或删除一个元素,需要平均移动(n+1)/2个元素,具体移动的元素个数与插入或删除元素的位置有关。
顺序表中逻辑上相邻的元素的物理位置相邻。
单链表中逻辑上相邻的元素的物理位置不一定相邻。
单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的指针域指示。
在单链表中设置头结点的作用是使第一个结点与其他结点的操作统一。
4、从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较(n+1)/2个结点。
在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是O(n)。
给定有n个元素的线性表,建立一个有序单链表的时间复杂度是O(n2)。
5、已知L是无表头结点的非空单链表,且指针p所指结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。
在p所指结点后插入s所指结点:4、1。
在p所指结点前插入s所指结点:7、11、8、4、1。
在表首插入s所指结点:5、12。
在表尾插入s所指结点:11、9、1、6。
1)p->next=s;2)p->next=p->next->next;3)p->next=s->next;4)s->next=p->next;5)s->next=L;6)s->next=NULL;7)q=p;8)while(p->next!=q) p=p->next;9)while(p->next!=NULL) p=p->next;10)p=q;11)p=L;12)L=s;13)L=p;6、已知指针p所指结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。
数据结构期中试卷及答案
一、选择题(每小题2分,共30分)1. 数据结构是( D )。
A.一种数据类型 B.数据的存储结构C.一组性质相同的数据元素的集合D.相互之间存在一种或多种特定关系的数据元素的集合2.以下与数据的存储结构无关的术语是( D )。
A.链队列 B. 链表 C. 顺序表 D. 栈3.以下数据结构中,( A )是非线性数据结构A.树 B.字符串 C.队 D.栈4.一个顺序存储线性表的第一个元素的存储地址是90,每个元素的长度是2,则第6个元素的存储地址是(B)。
A.98 B.100 C.102 D.1065.在线性表的下列运算中,不改变数据元素之间结构关系的运算是(D )。
A.插入 B.删除 C.排序 D.查找6.线性表采用链式存储时,其地址(D )。
A.必须是连续的 B.一定是不连续的C.部分地址必须连续 D.连续与否均可以7.线性表是(A )。
A.一个有限序列,可以为空 B.一个有限序列,不可以为空C.一个无限序列,可以为空 D.一个无限序列,不可以为空8.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为( B )。
A.3,2,6,1,4,5 B.3,4,2,1,6,5C.1,2,5,3,4,6 D.5,6,4,2,3,19. 若一个栈的输人序列是1,2,3,…,n,输出序列的第一个元素是n,则第k个输出元素是(C )。
A.k B.n-k-1 C.n-k+1 D.不确定10.对于队列操作数据的原则是( A )。
A. 先进先出B. 后进先出C. 先进后出D. 不分顺序11. 栈和队列的共同点是( C )。
A. 都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素D. 没有共同点12.在一个链队列中,假定front和rear分别为头指针和尾指针,删除一个结点的操作是( A )。
A.front=front->next B.rear=rear->nextC.rear->next=front D.front->next=rear13. 空串与空格串( B )。
计05期中数据结构试题及答案
计05期中数据结构试题及答案数据结构期中试题一. 单项选择题(每项选择2分,共48分)1.在数据结构中,从逻辑上可以把数据结构分成___C____。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构2.线性表是 A 。
(A) 一个有限序列,可以为空; (B) 一个有限序列,不能为空; (C) 一个无限序列,可以为空; (D) 一个无序序列,不能为空。
3.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。
插入一个元素时平均要移动表中的 B 个元素。
(A) n/2 (B) n+1/2 (C) n -1/2 (D) n 4.用链表表示线性表的优点是 C 。
(A)便于随机存取(B)花费的存储空间较顺序存储少 (C)便于插入和删除(D)数据元素的物理顺序与逻辑顺序相同5.某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用 C 存储方式最节省运算时间。
(A)单链表 (B)双链表 (C)带尾指针的单循环链表 (D)双循环链表6线性表的顺序存储结构是一种_A____的存储结构,线性表的链式存储结构是一种_____的存储结构。
A.随机存取 B.顺序存取 C.索引存取 D.散列存取7、若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用B 存储方式最节省运算时间。
(A) 单链表 (B) 顺序表 (C) 双链表 (D) 单循环链表8.算法分析的目的是___C___,算法分析的两个主要方面是__A____。
①A.找出数据结构的合理性B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进D.分析算法的易懂性和文档性②A.空间复杂性和时间复杂性 B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性9、栈的特点是① B ,栈和队列都是 C ② 。
①、 A、先进先出 B、后进先出②、 A、顺序存储的线性结构C、操作受限的线性结构C、进优于出D、出优于进B、链式存储的线性结构 D、操作受限的非线性结构10、若进队列的序列为1,2,3,4,则 D 是一个出队序列。
数据结构期中考试答案解析
数据结构期中试卷及答案解析考试说明考试说明:考察前五章小题,难度接近真题。
满分100分,共20道选择题,每题5分。
请在60分钟内完成。
C T(n)=n3+5000nD T(n)=2nlogn-1000n参考答案:C本题考察时间复杂度,多个项相加时,只保留最高阶项由于巴啦啦能量——“常<对<幂<指<阶”,因此T(n)=logn+5000n=O(n)T(n)=n2-8000n=O(n2)T(n)=n3+5000n=O(n3)T(n)=2nlogn-1000n=O(nlogn)所以O(n3)复杂度最大,选C。
3.下列叙述中正确的是()①线性表在链式存储时,查找第 i 个元素的时间同 i 的值成正比②线性表在链式存储时,查找第 i 个元素的时间同 i 的值无关③线性表在顺序存储时,查找第 i 个元素的时间同 i 的值成正比A. 仅①B. 仅②C. 仅③D. ①②③参考答案:A线性表在链式存储时,查找第 i 个元素的时间同 i 的值成正比。
线性表在顺序存储时,查找第 i 个元素的时间同 i 的值无关4.若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式()。
A. 单链表B. 双向链表C. 单循环链表D. 顺序表参考答案:D注意到,题目要求存取第i个元素及其前驱和后继,ABC三个选项找到第i个元素的时间复杂度均为O(n),而D选项对于这3个位置的存取的时间复杂度均为O(1),故选D。
5.静态链表中next域表示的是()A 下一个元素的地址B 下一个元素的值C 当前元素的值D 下一个元素在数组中的位置参考答案:D静态链表一般保存在数组中,它和链表最大的区别是静态链表占用一段固定的区间,所以next域只需要表示下一个元素在数组中的下标即可而不是表示下一个元素的地址,选D。
6.对于不带头结点的链栈L(next域表示该结点下一个元素),top指针指向栈顶元素(栈顶在链头方向),则x结点进栈操作为A top->next=x;top=x;B top=x;top-next=x;C top=x;x->next=top;D x->next=top;top=x;参考答案:D本题考察链栈的操作x入栈之后x下一个元素为原来的top,所以先把x->next=top,然后更新top,栈顶元素指向x。
数据结构_期中试卷(含答案)
一、选择题(每小题 1分,共10分)1、队列是插入和删除受限的线性表,其删除操作是在线性表的(1)进行。
A.表头 B.表尾 C.任意位置 D.指定位置2、下述哪一条是顺序存储结构的优点(2)。
A.存储密度大 B.插入运算方便C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示3、设有一个栈,元素的进栈次序为A, B, C, D, E,下列哪个是不可能的出栈序列(3)。
A.A, B, C, D, E B.B, C, D, E, AC.E, A, B, C, D D.E, D, C, B, A4、若二叉树的根结点所在的层次为第1层,则该二叉树的第k层上至多有(4)个结点。
2k B.2k C.2k-1 D.2k+1A. 15、设单链表中指针p指向结点m,若要删除m的后继结点(假设该后继结点存在),则需修改指针的操作为(5)。
A.p->next=p->next->next; B.p=p->next;C.p=p->next->next; D.p->next=p;6、下面程序段的时间复杂度为(6)。
for(int i=0; i<m; i++)for(int j=0; j<n; j++) a[i][j] = i*j;A.O(m2) B.O(n2) C.O(m+n) D. O(m*n)7、非空的循环单链表head的尾结点指针p满足(7)。
A.p==NULL B.p== head C.p->next==head D.p->next==NULL8、已知二维数组A[0..9,0..9]中,元素a[2][0]的地址为560,每个元素占4个字节,则元素a[1][0]的地址为(8)。
A. 518B. 520C. 522D. 5249、在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为(9)。
A.rear%n= = front B.(front+l)%n= = rearC.rear%n -1= = front D.(rear+l)%n= = front10、假设在一棵二叉树中,度为2的结点数为15,度为1的结点数为10个,则该二叉树的分支总数为(10)个。
答案《数据结构》期中参考试卷
厦门大学《_数据结构_》课程期中试卷信息科学与技术学院计算机科学系__年级___专业主考教师:____试卷类型:(A卷/B卷)任选5题((1,2),(3,4),(5,6),(7,8)中必须至少做一题),每题20分。
一、试设计一个双栈结构,它有两个端点end1和end2,满足从end1端插入的表目只能从end1端被删除,从end2端插入的表目只能从end2端被删除,并给出指定端i(i=1,2)的进栈push(S,e,i)和出栈pop(S,e,i)操作的算法描述。
再设计一个算法,它能够将一个有限长度的数据序列a1,a2,…,an,按照下标奇偶序号交替的方式将ai (1≤i≤n)分别从两端入栈,然后将数据出栈以实现整个数据序列的倒排。
该双栈宜采用顺序存储、栈顶迎面增长的存储方式,其形式定义如下:#define STACK_SIZE 1000typedef struct {SElemType base[STACK_SIZE];SElemType *top[3]; //top[1]表示end1端的栈顶指针,top[2]表示end2端的栈顶指针//初始值分别为base和base+STACK_SIZE-1}DSqStack;指定端i(i=1,2)的进栈push(S,e,i)和出栈pop(S,e,i)操作的算法描述如下:Status push(DSqStack &S, SElemType e, int i) {if ( S.top[1]-S.top[2]==1 ) //栈满exit(OVERFLOW);else if (i==1)*S.top[1]++ = e;else if (i==2)*S.top[2]-- = e;elsereturn ERROR;return OK;}Status pop(DSqStack &S, SElemType &e, int i) {if (i==1) {if ( S.top[1] == S.base ) return ERROR;e = *--S.top[1] = e;return OK;}else if (i==2) {if (S.top[2] == S.base+STACK_SIZE-1) return ERROR;e = *++S.top[2];return OK;} elsereturn ERROR;}基于上述结构的数据序列的倒排算法描述如下:Status resevers(DSqStack &S, SElemType a[], int n) {for (j=1;j<=n;j++)if (j%2==0) push(S, a[j-1],2);else push(S, a[j-1],1);for (j--;j>=1;j--)if (j%2==0) pop(S, a[n-j],2);else pop(S, a[n-j],1);return OK;}二、利用两个栈S1、S2模拟一个队列(如客户队列)时,如何用栈的运算实现队列的插入、删除运算。
数据结构-期中小测验及答案
《数据结构》期中小测验一、单项选择题1.线性表的顺序存储结构是一种()的存储结构,线性表的链式存储结构是一种()的存储结构.A.随机存取B. 顺序存取C. 索引存取D. 散列存取2.在以下的叙述中,正确的是( )A.线性表的线性存储结构优于链表存储结构B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出3.一个栈的入栈序列是1,2,3,....,n, 其输出序列为p1,p2,p3,.....,pn, 若p1=n, 则pi为()A.i B. n-i C. n-i+1 D. 不确定4.一个队列的入列序列是1,2,3,4,则队列的输出序列是()A.4,3,2,1 B.1,2,3,4 C.1,4,3,2 D.3,2,4,15.栈和队列的共同点是()A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点6.树最适合用来表示()A.有序数据元素 B. 无序数据元素C. 元素之间具有分支层次关系的数据D元素之间无联系的数据7.如果某二叉树的先序遍历序列是ABCDE,中序遍历序列是CDBEA,则后序遍历序列是( )A. CDEBAB. EDCBAC. DCEBAD.DCBAE8.将递归算法转化为非递归算法时,通常需要使用()A. 链表B. 树C.栈D.队列9.假定在一棵二叉树中,双分支结点数为15。
单分支结点数为30,则叶结点数为()个。
(A)15 (B)16 (C) 17 (D) 4710.设双向循环链表中结点的结构为(data, lLink, rLink),且不带表头结点。
若想在指针p所指结点之后插入指针s所指结点,则应执行下列哪一个操作?()A. p->rLink = s; s->lLink = p; p->rLink->lLink = s; s->rLink = p->rLink;B. p->rLink = s; p->rLink->lLink = s; s->lLink = p; s->rLink = p->rLink;C. s->lLink = p; s->rLink = p->rLink; p->rLink = s; p->rLink->lLink = s;D. s->lLink = p; s->rLink = p->rLink; p->rLink->lLink = s; p->rLink = s;二、判断题1.()链式栈与顺序栈相比,一个明显的优点是通常不会出现栈满的情况。
数据结构期中考试答案
9. 在 单 链 表 L 中 , 指 针 p 所 指 结 点 有 后 继 结 点 的 条 件 是 :
__(14)p->next!=NULL
。
10. 串是有 n(n>=0)个字符组成的有限序列;在 C 语言里用 (15)数组
存储串,并在串末尾加上 (16) ‘\0’ 作为串的结束标志。
11. 串的链式存储结构包括 (17)单字符结点链 和 (18)块 链。 12. 稀疏矩阵的压缩存储一般采用 (19)三元组 顺序表。 13. 递归算法直接或者间接调用了 (20)函数本身 。 二、 综合题(总分 60) 1.设计一数据结构,用来表示某一银行储户的基本信息: 账号、姓名、开
9. rear 是指向以循环链表表示的队列的队尾指针,EnLQueue 函数实现把 x 插入到队尾
的操作。DeLQueue 函数实现删除队头元素并赋给 x 的操作。根据题意按标号把合适的
内容填写到算法后面相应标号的位置。(队列元素的数据类型为 ElemType)【6 分】 void EnLQueue(ListNode *rear, ElemType x)
6. 在单链表中设置头结点的作用是_(9)使得删除插入等操作处理方法
相同
7. 栈是一种特殊的线性表,允许插入和删除操作的一端称为 (10)栈
顶 ,不允许插入和删除操作的一端称为 (11)栈底 。
8. 在顺序循环列队中,队空标志为____(12_cou(13)_Q->rear==Q->front&&count>0_________。
《数据结构》期中考试试卷
一、 填空题(每空 1 分,共 20 分)
1. 数据的物理结构包括 (1)顺序 的表示和 (2)链式 的表示。
数据结构期中试卷参考答案
1.评价算法优劣的基本标准有哪些?请就每一项给出简短说明。
答:(1)正确性:对输入的合法数据(包括边界情况),都能有正确的输出结果。
(2)健壮性:对输入的非法数据,算法能适当地做出反应或进行处理,而不是产生莫名其妙的输出结果。
(3)可读性:有助于人对算法的理解,易于发现错误,便于调试和修改。
(4)效率与低存储量需求:效率和存储量需求分别指算法执行所需要的时间和最大存储空间。
2.已知一棵二叉树的中序和后序序列分别为GLDHBEIACJFK和LGHDIEBJKFCA,(1)画出这棵二叉树,对这棵二叉树的构造过程给出一个简短说明;(2)将这棵二叉树理解为“孩子-兄弟法”表示的森林,画出这个森林。
答:(1)构造出的二叉树如图1所示:图1构造过程说明:①后序序列的最后一个元素为A, 得知二叉树的根为A;②在中序序列中找到树根A, A左侧的部分GLDHBEI为左子树的中序序列,A右侧的部分CJFK为右子树的中序序列。
并得知左子树7个节点,右子树4个节点;③后序序列的前7个节点LGHDIEB是左子树的后序序列,后续序列的后4个节点JKFC是右子树的后序序列;④根据中序GLDHBEI后序LGHDIEB求左子树,根据中序CJFK后序JKFC 求右子树。
依此类推,便可唯一构造出此二叉树。
(2)“孩子-兄弟表示法”,又称二叉链表表示法,链表中结点的两个链域分别指向该结点的第一个孩子和下一个兄弟结点,一棵二叉树与森林一一对应,该森林如图2所示:图23.字符A,B,C,D,E,F,G的使用频度分别是15,8,10,21,6,19,3,写出A,B,C,D,E,F,G的Huffman编码,列出编码过程,解释Huffman 有什么优点。
解:编码过程如下:各字符编码为字符 A B C D E F G编码011 110 010 00 1111 10 1110优点:Huffman编码为前缀码,它根据结点出现的频度由低到高编码,则可以使频度较高的结点有尽可能短的编码,从而使整个发送文件的总编码长度尽可能短。
数据结构期中测试
数据结构期中测试1.定义了一个结构体类型的普通变量,要使用其成员,则应该在变量和成员之间加()。
A:.(正确答案)B:>C:<D:&2.在定义结构体时会有一对{},在{}后不能省略的符号是下列哪一项()。
A:;(分号)(正确答案)B:,(逗号)C:""(双引号)D::(冒号)3.下列选项中关于什么是结构体描述正确的是()。
A:结构体是高级语言中的一种构造类型(正确答案)B:结构体是汇编语言中的一种指针类型C:结构体是高级语言中的一种指针类型D:结构体是C语言中的基本类型4.struct的作用是()。
A:定义整型变量B:定义结构体类型(正确答案)C:定义浮点型变量D:定义字符型变量5.定义了一个学生结构体,其中一个成员变量是年龄,应该使用()类型。
A:int(正确答案)B:floatC:小数D:浮点数6.p是一个结构体指针变量,它有一个成员变量叫sex,则使用格式正确的是()。
A:p->sex(正确答案)B:p%sexC:p#sexD:p&sex7.下列选项中是用来定义结构体的关键字是()。
A:struct(正确答案)B:functionC:staticD:stack8.数据分为原子类型(基本类型)和结构类型(构造类型),结构体属于()。
A:原子类型(基本类型)B:结构类型(构造类型)(正确答案)C:无类型D:以上都不对9.结构体定义会有一对{},在{}后不能省略的是()。
A:;(正确答案)B:.C:/D:>10.product属于结构体类型,要定义这种类型的变量pro定义正确的是()。
A:structproductpro;(正确答案)B:proproduct;C:structpro;D:以上都不对11.数据结构里,树形关系是()。
A:一对一关系B:一对多关系(正确答案)C:多对多关系D:没有关系12.数据结构里,线性结构是()。
A:一对一关系(正确答案)B:一对多关系C:多对多关系D:没有关系13.数据结构里,顺序存储是指()。
数据结构期中试题库及答案
-、判1、我11表的也辑顾序与物理陨障总是一致的。
()2、线性表的顺序存储表示优于飪氏存储表示。
()3、找性表若采用箍式存储表示时所有给点之间的存昭单元地址可连续可不连续。
()4、二维数组是貝数组元素为线性表的线性表。
()5、每种数据结枸都应具备三种基本运算:捕人、删除和搜索。
()6、数齬给构炭念包括数齬之间的逆瑕结构,数据在廿算机中的存储方氏和数据的运算三个方而。
()7、线性表中的每彳、结点最多只有一彳、痢驱和一个后继。
()8、我性的数据结枸可£1顺疥存储,也可決存储。
非找ft的数摒结构只能存储。
()9、枝和从艸逻辑上胡是线性表。
()10、单箍表从任何一个结点出发,邵能诉冋到所有结点()11、删除二叉HI If ffl中一个给点,再車新捕人上去,一定能得到原来的二叉UUffflo ()12、快速排床是孙Jf算法中最快的一种。
()13、多维数组是向量的推广。
()14. -filfflft二叉树的结点数目制可以力0。
()15、有接选tHlf是一种不稳定的排序方法。
()16、98、对一个堆按层次遍历,不一定能得到一个有序序列。
()17、在只有度为0和度为k的给点的k叉树中,设度为0的结点有nO个,度力k的结点有nk 个,则有n0=nk+1o ()18、折半搜索只适用与有序表,色括有序的颇序表相有序的85表。
()19、堆枝在数稠中的存储原剧是先进先出。
()20、臥列在数需中的存昭原II是后进先出。
()21、用皿邻矩阵表示图两用的存储空间大小与图的ii数成正比。
()22、略夫曼喲一定是满二叉讯。
()23、程序是用廿算机语言表述的算进。
()24、线徃表的顺Jf存储结构是通ilfiS元索的存储地址胃接反映数摒元索的廻辑关系。
(25、用一组地址连续的存昭单元存笊的元索一定构成找性表。
()26、堆枝、臥列和数组的逆辑结构邵是线性表结构。
()27、给定一组权值,可以唯一构危出一棵盼夫Ifflo ()28、只有在初始数据力逆序时,冒泡排序所执行的比较次数E^o ()29、希尔孙序在较率上较頁接接人松序有较大的ttiSo E是不稳定的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014-2015学年度第一学期《数据结构》
期中考试试卷
一、选择题(每题2分,共20分)
1. 计算机内部数据处理的基本单位是( B )。
A.数据
B.数据元素
C.数据项
D.数据库
2. 设语句x++的时间是单位时间,则以下语句的时间复杂度为(B)。
for(i=1; i<=n; i++)
for(j=i; j<=n; j++)
x++;
n) C.O(n) D.O(3n)
A.O(1)
B.O(2
3. 在一个长度为n的顺序表中删除第i个元素(0<=i<=n)时,需向前移动(A)个元素。
A.n-i B.n-i+l C.n-i-1 D.i
4. 在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行(B)。
A.s->next=p->next; p->next=s B.q->next=s; s->next=p
C.p->next=s->next; s->next=p D.p->next=s; s->next=q
5. 在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,当做出栈处理时,top变化为______。
C
A.top不变B.top=0 C.top-- D.top++
6. 在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为________。
D
A.rear%n= = front B.(front+l)%n= = rear
C.rear%n -1= = front D.(rear+l)%n= = front
7. 两个字符串相等的条件是(D )。
A.两串的长度相等
B.两串的长度相等,并且两串包含的字符相同
C.两串包含的字符相同
D.两串的长度相等,并且对应位置上的字符相同
8. 数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为( C )。
A.SA+141
B.SA+144
C.SA+222
D.SA+225
9. 设有广义表D=(a,b,D),其长度为(B ),深度为(A )。
A.无穷大
B.3
C.2
D.5
10. 假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为(B )个。
A. 15
B. 16
C. 17
D. 47
二、填空题(每空1分,共20分)
1. 数据的逻辑结构有四种基本形态,分别是________________、__________________、__________________和__________________。
2. 集合,线性,树,图
2. 一个算法的效率可分为__________________效率和__________________效率。
4. 时间,空间
3. 当对一个线性表经常进行存取操作,而很少进行插入和删除操作时,则采用_______存储结构为宜。
相反,当经常进行的是插入和删除操作时,则采用_______存储结构为宜。
7.顺
序,链接
4. 对于一个具有n个结点的单链表,在已知的结点p后插入一个新结点的时间复杂度为______,在给定值为x的结点后插入一个新结点的时间复杂度为_______。
12.O(1),O(n)
5.可以在线性表的______位置插入和删除元素;对于栈只能在_______位置删除元素;对于队列只能在_______位置插入元素。
9任何,栈顶,队尾
6. 设字符串S1= “ABCDEF”,S2= “PQRS”,则运算S=CONCAT(SUB(S1,2,LEN(S2)),SUB(S1,LEN(S2),2))后的串值为___________________。
3. “BCDEDE”
7. 一维数组的逻辑结构是______________,存储结构是______________;对于二维或多维数组,分为______________和______________两种不同的存储方式。
1. 线性结构,顺序结构,以行为主序,以列为主序
8. 三维数组R[c1…d1,c2…d2,c3…d3]共含有______________个元素。
(其中:c1≤d1,c2≤d2,c3≤d3)9.(d1-c1+1)×(d2-c2+1)×(d3-c3+1)
9. 数组A[1…10,-2…6,2…8]以行优先的顺序存储,设第一个元素的首地址是100,每个元素占3个存储长度的存储空间,则元素A[5,0,7]的存储地址为______________。
10. 913
三、简答题(每题6分,共18分)
1.已知L是无表头结点的单链表,且P结点既不是首元结点也不是尾元结点,试写出合适的语句序列。
(1)在P结点后插入S结点。
(2)在表首插入S结点。
(3)在表尾插入S结点。
2已知L是带表头结点的非空单链表,且P结点既不是首元结点也不是尾元结点,试写出合适的语句序列。
(1)删除P结点的直接后继结点。
(2) 删除P结点。
(3)删除尾元结点。
3. LinkList mynote(LinkList L)
{//L是不带头结点的单链表的头指针
if(L&&L->next){
q=L;L=L->next;p=L;
S1: while(p->next) p=p->next;
S2: p->next=q;q->next=NULL;
}
return L;
}
请回答下列问题:(1)说明语句S1的功能;(2)说明语句组S2的功能;(3)设链表表示的线性表为(a1,a2, …,a n),写出算法执行后的返回值所表示的线性表。
该算法的功能是:将开始结点摘下链接到终端结点之后成为新的终端结点,而原来的第二个结点成为新的开始结点,返回新链表的头指针。
四、算法设计题(每题14分,共42分)
1. 假设有一个循环链表的长度大于1,且表中既无头结点也无头指针,已知p为指向链表中某结点的指针,设计在链表中删除p所指结点的前趋结点的算法。
解:可引入一个指针q,当q->next=p时,说明此时q所指的结点为p所指结点的前趋结点,从而可得算法如下:
void delete (LinkList *p)
{ //在链表中删除p所指结点的前趋结点
LinkList *q,*t;
q=p;
while(q->next->next!=p) //q->next不是p的前趋结点
q=q->next;
t=q->next; //t指向要删除结点
q->next=p; //删除t结点
free(t);
}
2.已知线性表的元素是无序的,且以带头结点的单链表作为存储结构。
设计一个删除表中所有值小于max但大于min的元素的算法。
2.算法描述如下:
delete(LinkList *head, int max, int min)
{ LinkList *p,*q;
q=head;
p=head->next;
while (p!=NULL)
if((p->data<=min) || (p->data>=max))
{ q=p;
p=p->next;
}
else
{ q->next=p->next;
free(p);
p=q->next;
}
}
3. 假设表达式有单字母变量和双目四则运算符构成。
试写一个算法,对一个通常书写形式且书写正确的表达式求值。