数据结构应用题
- 格式:doc
- 大小:447.41 KB
- 文档页数:10
数据结构试卷(一)三、计算题(每题 6分,共24 分) 3.已知一个图的顶点集 V 和边集E 分别为:V={1,2,3,4,5,6,7};E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25}; 用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。
4.画出向小根堆中加入数据4, 2, 5, 8, 3时,每加入一个数据后堆的变化。
四、 阅读算法(每题 7分,共14分)1. LinkList mynote(LinkList L){//L 是不带头结点的单链表的头指针if(L&&L-> next){q=L ; L=L — >next ; p=L ;S1: while(p — >n ext) p=p — >next ; S2: p — >next=q ; q — >next=NULL ;}return L ;}请回答下列问题: (1 )说明语句S1的功能; (2) 说明语句组S2的功能;(3) 设链表表示的线性表为(a 1,a 2,…,a n ),写出算法执行后的返回值所表示的线性 表。
2. void ABC(BTNode * BT){if BT {ABC (BT->left); ABC (BT->right); cout<<BT->data<<''; } }该算法的功能是:五、 算法填空(共 8分) 二叉搜索树的查找 一谗归算法:bool Fi nd(BTreeNode* BST,ElemType & item){if (BST==NULL) return false; // 查找失败 else { if (item==BST->data){ item=BST->data;// 查找成功 return_______________________ ;}else if(item<BST->data) return Find( ,item);1.在如下数组A 中链接存储了一个线性表,A [0].next ,试写出该线性表。
数据结构试题及答案⼀、选择题(共10题,每题1分,共10分)1.下⾯关于线性表的叙述中,错误的是哪⼀个?()A.线性表采⽤顺序存储,必须占⽤⼀⽚连续的存储单元B.线性表采⽤顺序存储,便于进⾏插⼊和删除操作C.线性表采⽤链接存储,不必占⽤⼀⽚连续的存储单元D.线性表采⽤链接存储,便于插⼊和删除操作2.在⼀个单链表中,已知q所指结点是p所指结点的前驱,若在p和q之间插⼊s所指结点,则执⾏的操作是()。
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;3.设有三个元素X,Y,Z顺序进栈,下列得不到的出栈排列是( )。
A.XYZ B. YZX C. ZXY D. ZYX4.若⽤⼀个长度为6的数组来实现循环队列,且当前rear和front的值分别为0和3,则从队列中删除⼀个元素,再增加两个元素后,rear和front的值分别是( )。
A.1和5 B.2和4 C.4和2 D. 5和15.下列说法中正确的是()。
A.⼆叉树就是度为2的树 B.⼆叉树中不存在度⼤于2的结点C.⼆叉树中⾄少有⼀个结点的度为2 D.⼆叉树中任何⼀个结点的度都为2 6.在具有n个结点的⼆叉链表中,共有()个空指针。
A. nB. n-1C. n+1D. 不确定7.根据⼆叉树与树的转换关系可知,深度为h的满⼆叉树对应的森林由()棵树构成。
A.1 B.log2n C. h/2 D. h8.在⼀个⽆向图中,所有顶点的度数之和等于所有边数的()倍。
A.1/2 B.1 C. 2 D. 49.对17个元素的查找表做折半查找,则查找长度为5的元素下标依次是()。
A.8,17 B.5,10,12 C.9,16 D.9,1710.关于排序,下列说法中正确的是()。
北京语言大学网络教育学院《数据结构》【应用题】(1、已知序列(12,4,17,10,7,30),用直接选择排序法对其进行递增排序,写出每一趟的排序结果。
答:第1趟:4 12 17 10 7 30第2趟:4 7 17 10 12 30第3趟:4 7 10 17 12 30第4趟:4 7 10 12 17 30第5趟:4 7 10 12 17 302、单链表结点的类型定义如下:typedef struct LNode {int data;struct LNode *next;} LNode, *Linklist;写一算法,将带头结点的有序单链表A和B合并成一新的有序表C。
(注:不破坏A和B的原有结构)答:Merge(Linklist A, Linklist B, Linklist &C )void Merge(Linklist A, Linklist B, Linklist &C){ C=(Linklist)malloc(sizeof(LNode));pa=A->next; pb=B->next; pc=C;while(pa&&pb){ pc->next=(Linklist)malloc(sizeof(LNode));pc=pc->next;if(pa->data<=pb->data){ pc->data=pa->data; pa=pa->next;}else{ pc->data=pb->data; pb=pb->next;}}if(!pa) pa=pb;while(pa){ pc->next=(Linklist)malloc(sizeof(LNode));pc=pc->next;pc->data=pa->data; pa=pa->next;}pc->next=NULL;}3、已知一棵非空二叉树,其按中序和后序遍历的结果分别为:中序:CGBAHEDJFI 后序:GBCHEJIFDA请画出这棵二叉树,并写出其前序遍历的结果。
数据结构试卷一一、选择题20分1.组成数据的基本单位是 ;A 数据项B 数据类型C 数据元素D 数据变量2.设数据结构A=D,R,其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A 是 ;A 线性结构B 树型结构C 图型结构D 集合3.数组的逻辑结构不同于下列的逻辑结构;A 线性表B 栈C 队列D 树4.二叉树中第ii≥1层上的结点数最多有个;A 2iB 2iC 2i-1D 2i-15.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为 ;A p->next=p->next->nextB p=p->nextC p=p->next->nextD p->next=p6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是 ;A 6B 4C 3D 27.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为 ;A 100B 40C 55D 808.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为 ;A 3B 4C 5D 19.根据二叉树的定义可知二叉树共有种不同的形态;A 4B 5C 6D 710.设有以下四种排序方法,则的空间复杂度最大;A 冒泡排序B 快速排序C 堆排序D 希尔排序二、填空题30分1.设顺序循环队列Q0:m-1的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F =____________;;2.设线性表中有n个数据元素,则在顺序存储结构上实现顺序查找的平均时间复杂度为___________,在链式存储结构上实现顺序查找的平均时间复杂度为___________;3.设一棵二叉树中有n个结点,则当用二叉链表作为其存储结构时,该二叉链表中共有________个指针域,__________个空指针域;4.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点B,则在结点A的后面插入结点B的操作序列为______________________________________;5.设无向图G中有n个顶点和e条边,则其对应的邻接表中有_________个表头结点和_________个表结点;6.设无向图G中有n个顶点e条边,所有顶点的度数之和为m,则e和m有______关系;7.设一棵二叉树的前序遍历序列和中序遍历序列均为ABC,则该二叉树的后序遍历序列为__________;8.设一棵完全二叉树中有21个结点,如果按照从上到下、从左到右的顺序从1开始顺序编号,则编号为8的双亲结点的编号是___________,编号为8的左孩子结点的编号是_____________;9.下列程序段的功能实现子串t在主串s中位置的算法,要求在下划线处填上正确语句;int indexchar s , char t{i=j=0;whilei<strlens && j<strlent ifsi==tj{i=i+l; j=j+l;}else{i=_______; j=______;}if j==strlentreturni-strlent;else return -1;}10.设一个连通图G中有n个顶点e条边,则其最小生成树上有________条边;三、应用题30分1.设完全二叉树的顺序存储结构中存储数据ABCDE,要求给出该二叉树的链式存储结构并给出该二叉树的前序、中序和后序遍历序列;2.设给定一个权值集合W=3,5,7,9,11,要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫曼树的带权路径长度WPL;3.设一组初始记录关键字序列为19,21,16,5,18,23,要求给出以19为基准的一趟快速排序结果以及第2趟直接选择排序后的结果;4.设一组初始记录关键字集合为25,10,8,27,32,68,散列表的长度为8,散列函数Hk=k mod 7,要求分别用线性探测和链地址法作为解决冲突的方法设计哈希表;5.设无向图G所右图所示,要求给出该图的深度优先和广度优先遍历的序列并给出该图的最小生成树;四、算法设计题20分1.设计判断单链表中结点是否关于中心对称算法;2.设计在链式存储结构上建立一棵二叉树的算法;3.设计判断一棵二叉树是否是二叉排序树的算法;数据结构试卷一参考答案一、选择题二、填空题1. F+1 % m2. On,On3. 2n,n+14. s->next=p->next; s->next=s5. n, 2e6. m=2e7. CBA8. 4,169. i-j+1,010. n-1三、应用题1. 链式存储结构略,前序ABDEC,中序DBEAC,后序DEBCA;2. 哈夫曼树略,WPL=783. 18,5,16,19,21,23,5,16,21,19,18,234. 线性探测:6827322510876543210ΛΛ 链地址法:276832251086543210>->->->->->-h h h h h h h 5. 深度:125364,广度:123456,最小生成树T 的边集为E={1,4,1,3,3,5,5,6,5,6}四、算法设计题1. 设计判断单链表中结点是否关于中心对称算法;typedef struct {int s100; int top;} sqstack;int lklistsymmetrylklist head{sqstack stack; = -1; lklist p;forp=head;p=0;p=p->next {++; =p->data;}forp=head;p=0;p=p->next if p->data== =; else return0;return1;}2. 设计在链式存储结构上建立一棵二叉树的算法;typedef char datatype;typedef struct node {datatype data; struct node lchild,rchild;} bitree;void createbitreebitree &bt{char ch; scanf"%c",&ch;ifch=='' {bt=0; return;}bt=bitreemallocsizeofbitree; bt->data=ch;createbitreebt->lchild; createbitreebt->rchild;}3.设计判断一棵二叉树是否是二叉排序树的算法;int minnum=-32768,flag=1;typedef struct node{int key; struct node lchild,rchild;}bitree;void inorderbitree bt{if bt=0{inorderbt->lchild; ifminnum>bt->keyflag=0; minnum=bt->key; inorderbt->rchild;} }。
《数据结构》应用题参考习题数据结构是计算机科学中的一门基础课程,它主要研究数据的组织、存储和管理方式,以及不同数据结构对算法执行效率的影响。
在实际应用中,数据结构起到了至关重要的作用。
本文将介绍一些《数据结构》的应用题,并给出相应的参考习题。
一、栈的应用题1. 符号匹配问题问题描述:给定一个字符串,在其中包含了一些圆括号"()"、方括号"[]"和花括号"{}",判断字符中的括号是否匹配。
例题:判断字符串"{[()]()}"是否匹配。
解题思路:利用栈的先进后出特点,遍历字符串中的每个字符。
如果是左括号,则入栈;如果是右括号,则判断栈顶元素是否与之匹配。
参考习题:编写一个程序,实现括号匹配的功能,并输出匹配结果。
二、队列的应用题1. 循环队列的应用问题描述:设计一个循环队列,实现入队、出队等基本操作。
解题思路:利用数组实现循环队列,需要设置一个队头指针front和一个队尾指针rear。
入队操作时,将元素添加到rear位置;出队操作时,返回front位置元素,并将front后移。
参考习题:实现一个循环队列,并进行相关操作的测试。
三、链表的应用题1. 单链表反转问题描述:给定一个单链表,将其反转。
例题:将链表1->2->3->4->5反转为5->4->3->2->1。
解题思路:利用三个指针prev、cur和next,依次遍历链表,并修改指针指向实现链表的反转。
参考习题:编写一个程序,实现单链表反转,并输出反转后的链表。
四、树的应用题1. 二叉树的遍历问题描述:给定一个二叉树,实现它的前序遍历、中序遍历和后序遍历。
解题思路:分别使用递归和迭代的方式实现二叉树的前序遍历、中序遍历和后序遍历。
参考习题:编写一个程序,实现二叉树的前序遍历、中序遍历和后序遍历,并输出遍历结果。
五、图的应用题1. 图的最短路径问题描述:给定一个有向图,求两个顶点之间的最短路径。
2024王导数据结构综合应用题假设2024年,王导是一位深受学生喜爱的计算机科学导师。
他设计了一道综合应用题,旨在考察学生对数据结构的应用能力。
以下是题目内容和解答。
题目:在2024年的某个国家,有许多城市需要进行道路规划。
每个城市可以通过道路连接到其他城市,形成一个网络。
现有一份城市之间的道路连接关系表,其中包含了城市之间可以直接通行的道路及其长度。
请设计一个算法,找到所有城市之间的最短路径及其长度。
解答:为了解决这个问题,我们可以使用图的最短路径算法。
以下是一种常用的算法——Dijkstra算法。
1. 创建一个集合S,用于存放已经找到最短路径的城市,初始时为空。
2. 创建一个数组dist,用于存放每个城市到起点的最短路径长度,初始时所有元素为无穷大。
3. 选取一个起点,设置dist[起点]为0,并将起点加入集合S。
4. 对于起点相邻的每个城市,更新其到起点的最短路径长度,并将其加入集合S。
5. 从剩余的城市中选取一个离起点最近的城市u,将它加入集合S。
6. 对于每个城市v,如果v不在集合S中且通过u可以找到更短的路径,则更新其最短路径长度,并将其加入集合S。
7. 重复步骤5和步骤6,直到所有城市都加入集合S。
使用Dijkstra算法可以找到起点到所有城市的最短路径及其长度。
在这里可以使用优先队列(最小堆)来存储城市和最短路径长度的对应关系,以提高算法效率。
接下来我们以一个具体的例子来说明算法的步骤。
假设有4个城市,用数字1、2、3、4代表,它们之间的道路如下:- 城市1和城市2之间有一条长度为5的道路。
- 城市1和城市3之间有一条长度为9的道路。
- 城市2和城市3之间有一条长度为2的道路。
- 城市2和城市4之间有一条长度为6的道路。
- 城市3和城市4之间有一条长度为3的道路。
现在我们以城市1为起点,按照Dijkstra算法的步骤来求解最短路径及其长度。
1. 初始化操作:- 集合S = {1},dist = [0, ∞, ∞, ∞],表示起点到各个城市的最短路径长度。
1、假设一棵二叉树的层序序列是ABCDEFGHIJ 和中序序列是DBGEHJACIF,请画出该树。
21、有一个完全二叉树按层次顺序存放在一维数组中,如下所示:请指出结点P 的父结点,左子女,右子女。
3、给出下列二叉树的先序序列。
4、已知二叉树的先序遍历序列为ABCDEFGH ,中序遍历序列为CBEDFAGH ,画出二叉树。
答案:二叉树形态AFHGDECB(2)设一棵二叉树的先序序列: A B D F C E G H ,中序序列: B F D A G E H C ①画出这棵二叉树。
②画出这棵二叉树的后序线索树。
③将这棵二叉树转换成对应的树(或森林)。
ABFD CE HG(1) (2)1、已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L中序序列:D,J,G,B,E,H, A,C,K,I,L,F。
i.写出该二叉树的后序序列;ii.画出该二叉树;iii.求该二叉树的高度(假定空树的高度为-1)和度为2、度为1、及度为0的结点个数。
该二叉树的后序序列为:J,G,D,H,E,B,K,L,I,F,C,A。
该二叉树的形式如图所示:该二叉树高度为:5。
度为2的结点的个数为:3。
度为1的结点的个数为:5。
度为0的结点个数为:4。
5、试用权集合{12,4,5,6,1,2}构造哈夫曼树,并计算哈夫曼树的带权路径长度。
答案:215611187341230WPL=12*1+(4+5+6)*3+(1+2)*4=12+45+12=696、已知权值集合为{5,7,2,3,6,9},要求给出哈夫曼树,并计算带权路径长度WPL 。
答案:(1)树形态:325510199761332(2)带权路径长度:WPL=(6+7+9)*2+5*3+(2+3)*4=44+15+20=79(3) 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。
数据结构试题及答案一、选择题(每小题2分,共20分),每个题的备选答案中,只有一个是正确的,请将答案填写在试题的括号中。
1、对顺序存储的线性表,设其长度为20,在任何位置上插入或删除操作都是等概率的。
插入一个元素时平均要移动表中的()个元素。
A.10 B.9 C.11 D.122、若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表3、当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。
A.top++ B.top-- C.top = 0 D.top4、设入栈顺序为A,B,C,D,E,则出栈序列不可能是()。
A.EDCBA B.ABCDE C.ADEBC D.ABDEC5、已知关键字序列(46, 79, 56, 38, 40, 84),采用快速排序(以位于最左位置的关键字为基准)得到的第一次划分结果为:()A.{ 40, 38, 46, 56, 79, 84 } B.{ 38, 46, 79, 56, 40, 84 }C.{ 38, 46, 56, 79, 40, 84 } D.{ 40, 38, 46, 79, 56, 84 }6、一个有n个顶点和n条边的无向图一定是()。
A.不连通的B.连通的C.有环的D.无环的7、在一棵具有n个结点的二叉树的第i层上,最多具有()个结点。
A.2i B.2i-1 C.2i+1 D.2n8、对线性表采用折半查找法,该线性表必须()。
A.采用顺序存储结构B.采用顺序存储结构,且元素按值有序C.采用链式存储结构D.采用链式存储结构,且元素按值有序9、在一棵具有n个结点的完全二叉树中,分支结点的最大编号为()。
A.?(n-1)/2? B.?n/2? C.?n/2? D.?n/2? -110、在一个无向图中,所有顶点的度数之和等于所有边数的( ) 倍。
数据结构试卷及参考答案(五)一、选择题(20分)1.数据的最小单位是()。
(A)数据项(B)数据类型(C)数据元素(D)数据变量2.设一组初始记录关键字序列为(50,40,95,20,15,70,60,45),则以增量d=4的一趟希尔排序结束后前4条记录关键字为()。
(A)40,50,20,95(B)15,40,60,20(C)15,20,40,45(D)45,40,15,203.设一组初始记录关键字序列为(25,50,15,35,80,85,20,40,36,70),其中含有5个长度为2的有序子表,则用归并排序的方法对该记录关键字序列进行一趟归并后的结果为()。
(A)15,25,35,50,20,40,80,85,36,70(B)15,25,35,50,80,20,85,40,70,36(C)15,25,35,50,80,85,20,36,40,70(D)15,25,35,50,80,20,36,40,70,854.函数substr(“DATASTRUCTURE”,5,9)的返回值为()。
(A)“STRUCTURE”(B)“DATA”(C)“ASTRUCTUR”(D)“DATASTRUCTURE”5.设一个有序的单链表中有n 个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为()。
(A)O(log 2n)(B)O(1)(C)O(n 2)(D)O(n)6.设一棵m 叉树中度数为0的结点数为N 0,度数为1的结点数为N l ,……,度数为m 的结点数为Nm,则N 0=()。
(A)N l +N 2+……+Nm (B)l+N 2+2N 3+3N 4+……+(m-1)Nm(C)N 2+2N 3+3N 4+……+(m-1)Nm (D)2N l +3N 2+……+(m+1)Nm7.设有序表中有1000个元素,则用二分查找查找元素X 最多需要比较()次。
(A)25(B)10(C)7(D)18.设连通图G 中的边集E={(a ,b),(a ,e),(a ,c),(b ,e),(e ,d),(d ,f),(f ,c)},则从顶点a 出发可以得到一种深度优先遍历的顶点序列为()。
数据结构菜肴应用题
1. 菜单管理系统:设计一个数据结构来管理菜单,包括菜品名称、价格、描述、销量等信息。
可以实现菜单的添加、删除、查询、修改等功能。
2. 订单管理系统:设计一个数据结构来管理用户的订单,包括订单号、菜品列表、数量、下单时间等信息。
可以实现订单的添加、删除、查询、修改等功能。
3. 购物车:设计一个数据结构来管理用户的购物车,包括菜品列表、数量、价格等信息。
可以实现添加菜品到购物车、修改菜品数量、计算购物车总价等功能。
4. 餐厅排队系统:设计一个数据结构来管理餐厅的排队队列,包括顾客名字、人数、排队时间等信息。
可以实现顾客加入排队、顾客离开排队、查询当前排队信息等功能。
5. 食材管理系统:设计一个数据结构来管理食材的库存信息,包括食材名称、数量、进货时间等信息。
可以实现食材的进货、出库、查询库存信息等功能。
6. 菜品推荐系统:设计一个数据结构来存储用户的喜好及菜品的评分信息,根据用户的喜好和评分预测推荐菜品。
可以实现根据用户的喜好推荐菜品、根据评分排序菜品等功能。
7. 餐厅评价系统:设计一个数据结构来存储用户的评价信息,包括顾客姓名、评分、评论内容等信息。
可以实现顾客评价、
查询餐厅评价信息等功能。
8. 配送路线优化:设计一个数据结构来存储餐厅和顾客的位置信息,根据顾客位置和餐厅位置优化配送路线。
可以实现计算最优配送路线、查询配送状态等功能。
模拟试题二模拟试题二一、选择题(28分)1.设一数列的顺序为l,2,3,4,5,通过栈结构不可能排成的顺序数列为( )。
A)3,2,5,4,l B)1,5,4,2,3C)2,4,3,5,l D)4,5,3,2,l2。
二叉树的第3层最少有()个结点。
A)0 B)1 C)2 D)33。
—个n个顶点的连通无向图,其边的个数至少为( )。
A) n-l B)n C)n+l D)nlogn4。
下列排序方法中,( )的比较次数与记录的初始排列状态无关。
A)直接插入排序 B)起泡排序C)快速排序 D)直接选择排序5.-棵哈夫曼树总共有II个结点,则叶子结点有( )个。
A)5 B)6 C)7 D)96.已知某算法的执行时间为(n+n2)+log2(n+2),n为问题规模,则该算法的时间复杂度是( )。
A)O(n)B)O(n2) C)O(log2n)D)O(nlog2n)7。
如果一棵树有10个叶子结点,则该树总共至少有( )个结点。
A)lO B)11 C)19 D) 218。
—个100×100的三角矩阵a采用行优先压缩存储后,如果首元素a[0][0]是第一个元素,那么a[4] [2]是第( )个元素。
A)13 B) 401 C) 402 D)4039.有一棵二叉树如题图1,该树是()。
A)二叉平衡树B)二叉排序树C)堆的形状D)以上都不是10。
对于含有n个顶点e条边的无向连通图,利用Prim算法生成最小代价生成树,其时间复杂度为(),利用Kruska算法的时间复杂度为().A)O(log2n) B)0(n2) C)O(ne) D)O(elog2ne)11.具有n个顶点的完全有向图的边数为( ).A)n(n—l)/2 B)n(n-l) C) n2 D)n2—112。
设有100个元素,用折半查找时,最大比较次数为(),最小比较次数为()。
A)25 B)7 C) 10 D)l13。
在内部排序中,排序时不稳定的有().A)插入排序B)冒泡排序C)快速排序D)归并排序14.串是一种特殊的线性表,其特殊性体现在()。
打卡表的数据结构应用1. 概述在我们日常生活中,打卡表是一种常见的记录工作、学习或者生活状态的工具。
通过对打卡表的数据结构应用,我们可以更加有效地管理和分析我们的时间利用情况。
本文将深入探讨数据结构在打卡表中的应用,帮助读者更好地理解和利用数据结构来管理自己的时间和任务。
2. 打卡表数据结构概述打卡表可以理解为一种包含日期、打卡状态和打卡备注的数据表格。
在计算机科学中,我们可以使用数组、链表或者哈希表等数据结构来存储和管理打卡表的数据。
其中,数组适合固定大小的打卡表,链表适合动态变化的打卡表,而哈希表则适合快速查找某一天的打卡状态。
3. 数据结构在打卡表中的具体应用① 数组:当我们需要创建一个固定大小的打卡表时,可以使用数组来存储每一天的打卡状态。
通过数组的索引和数值来表示日期和打卡状态,我们可以快速、方便地获取特定日期的打卡状态。
不过,数组的缺点是大小固定,不适合动态变化的打卡表。
② 链表:对于动态变化的打卡表,我们可以使用链表来存储打卡状态。
通过链表的结点来表示每一天的打卡状态,并且可以方便地插入、删除特定日期的打卡信息。
链表的灵活性和动态性使得它适合于长期记录和管理打卡表中的数据。
③ 哈希表:当我们需要快速查找某一天的打卡状态时,可以使用哈希表来存储日期和打卡状态的映射关系。
通过哈希函数来计算日期的哈希值,我们可以快速获取特定日期的打卡状态,加快了数据的检索速度。
不过,哈希表需要处理哈希冲突等问题,需要更多的额外处理。
4. 总结与展望通过本文的介绍,我们可以看到数据结构在打卡表中的重要作用。
不同的数据结构可以适用于不同类型的打卡表,帮助我们更好地记录和管理时间利用情况。
在未来,随着人工智能和大数据技术的发展,打卡表数据结构的应用还将有更多的可能性,帮助我们更好地管理和优化我们的生活和工作。
个人观点数据结构在打卡表中的应用是非常实用和重要的。
通过合理选择和设计数据结构,我们可以更好地管理和分析自己的时间利用情况,提高生活和工作的效率。
数据结构(A卷)【含答案】试卷编号拟题教研室(或教师)签名教研室主任签名………………………………………………………………………………………………………课程名称(含档次)数据结构A课程代号课程编号专业层次(本、专)本科考试⽅式(开、闭卷)闭卷⼀、应⽤题(3⼩题,共20分)1.设有⼀个栈,元素进栈的次序为:A,B,C,D,E,⽤I表⽰进栈操作,O表⽰出栈操作,设初始状态栈为空,写出下列出栈的操作序列。
(8分)(1)C,B,A,D,E(2)A,C,B,E,D2. ⼀份电⽂中有6种字符:A,B,C,D,E,F,它们的出现频率依次为16,5,9,3,30,1,完成问题:(1)设计⼀棵哈夫曼树;(画出其树结构)(2)计算其带权路径长度WPL。
(8分)3. 已知⽆向图G的邻接表如图所⽰,分别写出从顶点1出发的深度遍历和⼴度遍历序列。
(4分)⼆、判断正误(10⼩题,共20分)1.顺序表结构适宜于进⾏顺序存取,⽽链表适宜于进⾏随机存取。
( )2.⼀个栈的输⼊序列为:A,B,C,D,可以得到输出序列:C,A,B,D。
( )3.栈和队列都是受限的线性结构。
()4. 逻辑结构与数据元素本⾝的内容和形式⽆关。
()5.线性表链式存储的特点是可以⽤⼀组任意的存储单元存储表中的数据元素。
()6. 完全⼆叉树的某结点若⽆左孩⼦,则它必是叶结点。
()7. 邻接表只能⽤于存储有向图,⽽邻接矩阵则可存储有向图和⽆向图。
()8. 图的深度优先搜索序列和⼴度优先搜索序列不是惟⼀的。
()9. 折半查找只适⽤于有序表,包括有序的顺序表和链表。
()10. 每种数据结构都具备三个基本操作:插⼊、删除和查找。
()三、单项选择题(15⼩题,共30分)1.算法分析的两个主要⽅⾯是()。
A. 空间复杂度和时间复杂度B.正确性和简单性C.可读性和⽂档性D.数据复杂性和程序复杂性2.具有线性结构的数据结构是()。
A.图B.树C.⼴义表D.栈3.下⾯程序段的时间复杂度是()。
1、二叉树前序 中序遍历(序列与图的相互转化) 例题1:中序序列BDCEAFHG前序序列 ABCDEFGH例题2AB FC GDE HABCDFEGHKJILOMNPRQ前序序列:ABCDEFGHIJKLMPQRNO(参考:后序序列:BDEFCAIJKHGQRPMNOL)中序序列:BDEFCAIJKHGPQRMNOL2、哈夫曼树。
其对应字母分别为a,b,c,e,f,g,h 例题1:7,19,2,6,32,3,21,10哈夫曼编码: a:0010b:10c:00000d:0001e:01f:00001g:11h:0011例题2: w={5, 29, 7, 8, 14, 23, 3, 11}例题3例如,设一组电文的字符集D及其概率分布W为:D={a,b,c,d,e},W={0.12,0.40,0.15,0.08,0.25},用哈夫曼算法构造哈夫曼树及其对应的编码如下图所示。
3、最小生成树Prim算法4、邻接矩阵(图<->邻接矩阵<->遍历序列(深度、宽度遍历))5、二分法检索又称为折半查找,采用二分法检索可以大大提高查找效率,它要求线性表结点按其关键字从小到大(或从大到小)按序排列并采用顺序存储结构。
采用二分搜索时,先求位于搜索区间正中的对象的下标mid,用其关键码与给定值x比较:➢ l[mid]. Key = x,搜索成功;➢ l[mid]. Key > x,把搜索区间缩小到表的前半部分,再继续进行对分搜索;➢ l[mid]. Key < x,把搜索区间缩小到表的后半部分,再继续进行对分搜索。
➢每比较一次,搜索区间缩小一半。
如果搜索区间已缩小到一个对象,仍未找到想要搜索的对象,则搜索失败。
例题1:有一组有序的线性表如下:(10,14,20,32,45,50,68,90,100,120)下面分析在其中二分检索关键字20的过程。
下面分析二分检索关键字95的过程:下面给出二分检索法的非递归与递归实现算法,算法中使用seqlist.h中定义的顺序查找表。
数据结构考试题库及答案一、选择题1. 下列哪个不是线性结构?A. 栈B. 队列C. 双向链表D. 树答案:D2. 在顺序存储结构中,数据元素的物理位置与逻辑位置相同的是哪种结构?A. 栈B. 队列C. 线性表D. 树答案:C3. 下列哪种排序算法的时间复杂度是O(nlogn)?A. 冒泡排序B. 选择排序C. 快速排序D. 插入排序答案:C4. 在二叉树中,度为0的节点称为()。
A. 根节点B. 内节点C. 叶子节点D. 父节点答案:C5. 下列哪种图的邻接矩阵是对称的?A. 有向图B. 无向图C. 有向连通图D. 无向连通图答案:B二、填空题6. 在链表中的每个节点至少包含两个部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。
7. 在顺序表中,元素之间的逻辑关系是由它们的相对位置来体现的。
8. 快速排序的基本思想是:在待排序序列中选取一个基准元素,将序列中所有小于基准元素的元素放在基准元素前面,所有大于基准元素的元素放在基准元素后面。
9. 图中的每个节点称为顶点,顶点之间的连线称为边。
10. 在哈希表中,哈希函数的目的是将关键字映射到散列地址。
三、判断题11. 在顺序表中插入一个元素的时间复杂度为O(1)。
()答案:错误。
插入一个元素的时间复杂度为O(n),因为可能需要移动其他元素。
12. 在链表中删除一个元素的时间复杂度为O(n)。
()答案:错误。
删除一个元素的时间复杂度为O(1),只要找到该元素的前一个节点即可。
13. 二分查找只适用于有序的顺序表。
()答案:正确。
14. 在二叉树中,任意节点的度数不会超过2。
()答案:正确。
15. 图的邻接表表示法比邻接矩阵表示法更加节省空间。
()答案:正确。
四、应用题16. 请用C语言实现一个顺序栈的数据结构,并给出入栈、出栈和判断栈空的操作。
答案:```c#define MAXSIZE 100typedef struct {int data[MAXSIZE];int top;} SeqStack;// 初始化栈void InitStack(SeqStack s) {s->top = -1;}// 判断栈是否为空int StackEmpty(SeqStack s) {return s->top == -1;}// 入栈int Push(SeqStack s, int x) {if (s->top == MAXSIZE - 1) {return 0; // 栈满}s->data[++s->top] = x;return 1;}// 出栈int Pop(SeqStack s, int x) {if (s->top == -1) {return 0; // 栈空}x = s->data[s->top--];return 1;}```17. 请简述二分查找的基本思想。
《数据结构》大题及答案一、应用题1.已知某字符串S中共有8种字符,各种字符分别出现2次、1次、4次、5次、7次、3次、4次和9次,对该字符串用[0,1]进行前缀编码,问该字符串的编码至少有多少位。
解:以各字符出现的次数作为叶子结点的权值构造的哈夫曼编码树如图所示。
其带权路径长度=2×5+1×5+3×4+5×3+9×2+4×3+4×3+7×2=98,所以,该字符串的编码长度至少为98位。
2.已知关键码序列为(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec),散列表的地址空间为0~16,设散列函数为H(x)=[ i/2 」(取下整数) ,其中i为关键码中第一个字母在字母表中的序号,采用链地址法处理冲突构造散列表,并求等概率情况下查找成功的平均查找长度。
解:H(Jan)=10/2=5, H(Feb)=6/2=3, H(Mar)=13/2=6, H(Apr)=1/2=0H(May)=13/2=6, H(Jun)=10/25, H(Jul)=10/25, H(Aug)=1/2=0H(Sep)=19/2=8, H(Oct) =15/2=7, H(Nov) =14/2=7, H(Dec) =4/2=2采用链地址法处理冲突,得到的开散列表如下:平均查找长度=(1×7+2×4+3×1)/12=18/123.分析下面各程序段的时间复杂度(1) s1(int n){ int p=1,s=0;for (i=1;i<=n;i++){ p*=i;s+=p; }return(s);} ——O(n)(2) s2(int n)x=0;y=0;For (k=1;k<=n;k++) x++;For (i=1;i<=n;i++)For (j=1;j<=n;j++)y++; ——O(n2)4.下述算法的功能是什么?(1)(1)返回结点*p的直接前趋结点地址。
数据构造试卷〔一〕一、单项选择题〔每题 2 分,共20分〕1.栈和队列的共同特点是( a )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点2.用链接方式存储的队列,在进展插入运算时( d ).A. 仅修改头指针B. 头、尾指针都要修改C. 仅修改尾指针D.头、尾指针可能都要修改3.以下数据构造中哪一个是非线性构造?( d )A. 队列B. 栈C. 线性表D. 二叉树4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
cA.688 B.678 C.692 D.6965.树最适合用来表示( c )。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据6.二叉树的第k层的结点数最多为( d ).A.2k-1 B.2K+1 C.2K-1 D. 2k-17.假设有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进展二分查找,那么查找A[3]的比拟序列的下标依次为( c d)A. 1,2,3B. 9,5,2,3C. 9,5,3D. 9,4,2,38.对n个记录的文件进展快速排序,所需要的辅助存储空间大致为 cA. O〔1〕B. O〔n〕C. O〔1og2n〕D. O〔n2〕9.对于线性表〔7,34,55,25,64,46,20,10〕进展散列存储时,假设选用H〔K〕=K %9作为散列函数,那么散列地址为1的元素有〔 c d〕个,A.1 B.2 C.3 D.410.设有6个结点的无向图,该图至少应有( a )条边才能确保是一个连通图。
二、填空题〔每空1分,共26分〕1.通常从四个方面评价算法的质量:____时间正确性_____、____占用内存_易读性____、____复杂度__强壮性___和_____准确度_ 高效率___。
一、单选题(每小题3分,共30分)1.在逻辑上可以把数据结构分成。
( ) A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构2.串是_________。
( ) A.不少于一个字母的序列B.任意个字母的序列C.不少于一个字符的序列D.有限个字符的序列3.在n个元素的顺序表中,时间复杂度是O(1)的操作是______。
( ) A.获得第i个数据元素值B.查找给定值C.在第i个位置上插入数据元素D.删除第i个数据元素4.线性表若采用链式存储结构时,要求内存中可用存储单元的地址________。
( )A. 必须是连续的B. 部分地址必须是连续的C. 一定是不连续的D. 连续或不连续都可以5.单链表中,在p结点之后插入q结点,操作的语句为。
( ) A.q->next=p->next,p->next=q B.p=q->next,q->next=pC.p->next=q->next,q->next=p D.q=p->next,p->next=q6.栈中数据元素的插入和删除操作是在表的进行的。
( )A.一端B.两端C.中间D.任意位置7.队列的特点是。
( )A.先进先出B.后进先出C.先进后出D.随机存取8.树中结点A有3个兄弟,结点B是A的双亲,则B的度是。
( )A.1B.2C.3D.49.下面关于图的存储结构的叙述中正确的是____________。
( )A.用邻接矩阵存储图,占用空间大小只与图中顶点数有关,而与边数无关B.用邻接矩阵存储图,占用空间大小只与图中边数有关,而与顶点数无关C.用邻接表存储图,占用空间大小只与图中顶点数有关,而与边数无关D.用邻接表存储图,占用空间大小只与图中边数有关,而与顶点数无关10.对于不带权的有向图,其邻接矩阵的每一列包含的“1”的个数为。
( )A.图中每个顶点的入度B.图中每个顶点的出度C.图中弧的条数D.图中连通分量的数目二、判断题(每小题1分,共10分)对于正确的说法,请在题前的括号内打√,错误的说法则打×。
《数据结构》――应用题复习概要2022年4月1.写出执行下列程序段时,语句S的执行次数。
for (i=1; i<n; i++)for (j=n; j>=i; j--)S;2.假设n为2的乘幂,并且n>2,试求下列算法的时间复杂度及变量count的值(以n的函数形式表示)int Time(int n){ int count:=0; x:=2;while (x<n/2){ x:=2*x; count:=count +1 };return (count);}3.已知双向链表、指针P、Q所指的结点和结点的结构(数据域DATA、指针域LL及RL),分别画出经过下述算法后的双向链表。
(1)Q->RL = P->RL; P->RL = Q; Q->RL->LL = Q; Q->LL = P;(2)Q->RL = P; P->LL->RL = Q; Q->LL = P->LL; P->LL = Q;(3)P->LL->RL = P->RL; P->RL->LL = P->LL;4.设栈S的初始状态为空,元素a, b, c, d, e和f依次通过栈S,试分析下列各组出栈次序,每组所用的最大容量。
(1)a,b,c,d,e,f;(2)f,e,d,c,b,a;(3)b,d,c,f,e,a5.有字符串A+B*C-D,试写出利用栈操作将该字符串序列改为ABC*+D-的操作步骤,这里用X和S分别表示字符的进栈和出栈操作(例如把字符ABCD改为ACBD的操作步骤为XSXXSSXS)。
XSXXSXXSSSXXSS6.一棵二叉树的结点数采用顺序存储结构,存于下列数组T中,画出该二叉树。
b7.已知一棵树的双亲表示如下,其中各兄弟结点依此排列,试画出该树及对应的孩子兄弟表示的二叉树。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Data A B C D E F G H I J K L M N OParent 0 1 1 1 2 2 3 3 4 4 5 6 6 7 8ABE CDK FLMGN HOIJ8.有一个完全二叉树按层次顺序存放在一维数组中,如下所示:请指出结点P的父结点,左子女,右子女。
一、应用题1. 已知关键字序列为:(74,33,52,41,13,88,66,59)哈希表长为9,哈希函数为:H (k)=k %9,解决冲突用线性补偿探测法 (取Q=5),试构造哈希表,并求出等概率下查找成功的平均查找长度。
【答案】(1)哈希表:0 1 2 3 4 5 6 7 859 74 88 13 4133 52 6621211112(2) ASL=(5*1+3*2)/8=11/82. 已知一个AOV 网如图所示。
(1)试画出它的邻接链表。
(顶点号递减出现在各邻接表中)(2)试写出按照拓扑排序算法得到的拓扑序列。
V 6V 1V 2V 4V 5V 3【答案】(1)1 v 1 06v 6 1 5 v 5 3 3V 3 2 4v 4 0 2v 2 2 ∧ 6 53 ∧5 ∧5 ∧2 ∧32 ∧(2)v 4,v 6,v 1,v 3,v 5,v 23. 已知线性表的存储结构为顺序表,阅读下列算法,并回答问题:(1)设线性表L=(21,-7,-8,19,0,-11,34,30,-10),写出执行f30(&L)后的L 状态;(2)简述算法f30的功能。
void f30 (SeqList *L) { int i,j;for (i=j=0;i<L->length; i++)if(L->data[i]>=0){if(i!=j)L->data[j]=L->data[i]; j++; } L->length=j; }【答案】(1)L=(21,19,0,34,30)(2) 删除顺序表中小于0的数。
4. 已知关键字序列{34,26,47,12,63,41,22,59},利用堆排序的方法对其排序。
(1)写出在构成初始堆后关键字的排列情况。
(2)写出在堆排序的过程中输出前4个记录时,每次调整后关键字的排列情况。
【答案】(1)初始堆:{12,26,22,34,63,41,47,59}(2)输出12后:{22,26,41,34,63,59,47} 输出22后:{26,34,41,47,63,59} 输出26后:{34,47,41,59,63} 输出34后:{41,47,63,59}5. 请用克鲁斯卡尔算法构造下图所示网络的最小生成树。
14v 1 v 4v 5v 2v 3V 6108 1822121016 1920【答案】最小生成树如下图所示:14v 1 v 4v 5v 2v 3V 68 18 12106. 给出一组关键字K={14,28,17,9,7,21,13,4,11},写出用下列方法排序时,第一趟结束时关键字的排列状态。
(1)快速排序(2)希尔排序(d 1=4) (3)归并排序 【答案】给出一组关键字K={14,28,17,9,7,21,13,4,11},写出用下列方法排序时,第一趟结束时关键字的排列状态。
(1)快速排序:{11,4,13,9,7}14{21,17,28}(2)希尔排序(d 1=4):{7,21,13,4,11,28,17,9,14}(3)归并排序:[11,28 ] [9,17 ] [7,21 ] [4,13 ] [11]7. 假设一棵二叉树的先根遍历序列为ABCDEFGHI ,中根遍历序列为ADCEBFHIG 。
(1)画出该二叉树;(2)写出后根遍历序列。
【答案】(1)二叉树:BI ADGCEFH(2)后根遍历序列: DECIHGFBA 8. 已知关键字序列为:(93,42,79,131,12,102,27),哈希表长为9,哈希函数为:H (k)=k %9,解决冲突用线性探测再散列法,试构造哈希表,并求出等概率下查找成功的平均查找长度。
【答案】(1) 哈希表:0 1 2 3 4 5 6 7 827 93 12 131 4279102(2) ASL=(5*1+1*2+1*6)/7=13/79. 设网络如图所示,试用普里姆算法按照并入最小生成树中边的次序填写下表(从顶点A 开始),并画出对应的最小生成树。
154432 22ABEC DF 1 2 3 4 5始 点 终 点权 值 【答案】 1 2 34 5 始 点 A R C C E 终 点 R C D E F 权 值 22 2 311 32 22ABEC DF10. 依次读入给定的整数序列{7,16,4,8,20,9,6,18,5},完成下列操作:1)构造一棵二叉排序树,计算在等概率情况下该二叉排序树的平均查找长度ASL;2)若变更序列中元素的排列,可构造出平均查找长度达到最小的二叉排序树。
写出满足上述要求的序列中的第一个元素。
【答案】(1)ASL=(1+2*2+3*3+3*4)/9=26/9(2)811. (1)画出对表长为13的有序顺序表进行二分查找的判定树;(2)已知关键字序列为(12,14,16,21,24,28,35,43,52,67,71,84,99),写出在该序列中二分查找37时所需进行的比较次数。
【答案】(1)如图所示.71031 5 8 122 4 6 9 11 13(2)4次12. 已知二叉树如右图所示。
(1)画出该二叉树的二叉链表;(2)分别写出该二叉树的先根、中根和后根遍历序列。
AB CGD E F【答案】(1)D ∧∧ACB ∧E∧G ∧∧F ∧∧(2)先根遍历序列:ABDCEGF中根遍历序列: DBAEGCF后根遍历序列: DBGEFCA13. 已知关键字序列为:(70,31,52,41,88,12,27,66)哈希表长为9,哈希函数为:H (k)=k %9,解决冲突用线性探测再散列法,试构造哈希表,并求等概率下查找成功的平均查找长度。
【答案】(1) 哈希表:0 1 2 3 45 6 7 888 27 12 31 41 66 70 52(2) ASL=(4*1+2*2+1*3+1*4)/8 = 15/814. 设一段文字中七个常用汉字为{的,地,得,和,个,在,是},每个字符的使用频率分别为{26,6,4,7,9,8,18}。
请画出对应的哈夫曼编码树(按照每个结点的左子树根结点的权小于等于右子树根结点的权的次序构造),并求出每个字符的哈夫曼编码。
【答案】哈夫曼树:地得111111 是的在个和33158187451992678104 6哈夫曼编码的地得和个11 1011 1010 000 100 15. 假设以数组seqn[m]存放循环队列的元素,设变量rear和quelen分别指示循环队列中队尾元素的位置和元素的个数。
(1)写出队满的条件表达式;(2)写出队空的条件表达式;(3)设m=40,rear=13,quelen=19,求队头元素的位置;(4)写出一般情况下队头元素位置的表达式。
【答案】(1)quelen==m (2)quelen==0 (3)35(4)(rear-quelen+1+m)%m16. 下列是一棵五阶B-树,依次执行以下两步操作,画出每一步执行后所得到的B-树形。
(1)插入n;(2)删除e 。
c f j ra b g h i d e k l m ps t u x 【答案】 (1)插入n:a bg h i d e s t u xjc fm rk l n p (2)删除e: a b d f s t u xjc g m r k l n p h i17. 选取哈希函数为H(K)=K % 13,用链地址法处理冲突。
试在0~12的散列地址空间中对关键字序列{87,25,310,08,27,132,68,95,187,123,70,63,47}构造哈希表,并求出等概率下查找成功的平均查找长度。
【答案】H(87)=87 % 13=9 H(25)=25 % 13=12 H(310)=310 % 13=11 H(8)= 8 % 13=8H(27)=27 % 13=1 H(132)=132 % 13=2 H(68)=68 % 13=3H(95)=95 % 13=4 H(187)=187 % 13=5 H(123)=123 % 13=6 H(70)=70 % 13=5 H(63)=63 % 13=11 H(47)=47 % 13=8∧ ∧ ∧ 01234567891011 1227 ∧ 132 ∧ 68 ∧ 95 ∧ 70 123 ∧ 8 87 ∧ 63 25 ∧187 ∧47 ∧ 310 ∧ASL=(1*10+2*3)/13=16/13 18. 已知一组数据元素为(57,24,96,73,18,45,30,40,82),要求:(1)试从空树开始画出按元素排列顺序输入而生成的一棵二叉排序树;(2)画出删除结点57后的二叉排序树。
【答案】(1) 二叉排序树:241830967357458240(2)删除结点57后的二叉排序树:24 18309673 4582 40或:24 183096 8273454019. 假设有一个如下图的8×8矩阵,矩阵元素都是整型量(次对角线以上的元素都是0)。
若将上述矩阵中次对角线及其以下的元素按行优先压缩存储在一维数组B 中,请回答下列问题: (1)B 数组的体积至少是多少?(2)若a 18存储在B[0]中,a 56存储在B[k]中,则k 值为多少? (1) (2)【答案】(1)36 (2)1320. 已知有向图的邻接表如图所示,(1) 写出从顶点A 出发,对该图进行广度优先搜索遍历的顶点序列;(2) 画出该有向图的逆邻接表。
【答案】 (1)ABDCE (2)0 A 1 B 2 C 3 D 4 E4 ∧ 0 34 ∧1 0 ∧2 ∧21. 假设以带头结点的单链表表示线性表,阅读下列算法f30,并回答问题:(1) 设线性表为( a 1,a 2, a 3, a 4, a 5, a 6, a 7 ), 写出执行算法f30后的线性表; (2) 简述算法f30的功能。
void f30(LinkList L) {//L 为带头结点单链表的头指针 LinkList p,q; P =L;while (p &&p ->next){ q = p ->next;p ->next =q ->next; p =q ->next; free(q); } }【答案】(1)(a 2,a 4,a 6)(2) 删除单链表中数据结点序号为奇数的那些结点。
22. 已知有向图的邻接表如图所示,(1) 写出从顶点A 出发,对该图进行广度优先搜索遍历的顶点序列;(2) 画出该有向图的逆邻接表。
【答案】(1)ABDCE (2)0 A 1 B 2 C 3 D 4 E4 ∧ 0 34 ∧1 0 ∧2 ∧23. 依次读入给定的整数序列{7,16,4,8,20,9,6,18,5},完成下列操作:1)构造一棵二叉排序树,计算在等概率情况下该二叉排序树的平均查找长度ASL;2)若变更序列中元素的排列,可构造出平均查找长度达到最小的二叉排序树。