,线性表(List),小结和作业,双向循环链表,习题讲解,单向循环链表,一元多项式,单向循环链表,定义:最后一个结点的指针不是空指针,而是指向了头结点。,逻辑形态:,单向循环链表,差异:,1、判断空表的条件: L-next=NULL变为L-next =L,2、判断最后一个数据元素的条件由 p-nex
数据结构复习习题课Tag内容描述:
1、线性表(List),小结和作业,双向循环链表,习题讲解,单向循环链表,一元多项式,单向循环链表,定义:最后一个结点的指针不是空指针,而是指向了头结点。,逻辑形态:,单向循环链表,差异:,1、判断空表的条件: L-next=NULL变为L-next =L,2、判断最后一个数据元素的条件由 p-next=NULL 改变为p-next=L,InitList,Status InitList(LinkList ,ListLength,1、p指向头结点, j=0,2、如果p-next != L,j+, p-next,3、重复2,直到 p为空, j即为长度。,ListLength,int ListLength(LinkList L),GetItem,1、p指向头结点,2、重复p=p-next操作 i 次,3、p指向。
2、习题课,第3章 栈和队列,3.1,(1) 123 , 132 , 213 , 231 , 321 (2) 435612不能得到(6出站时,12必须在站中,只能出站成21,无法得到12)135426可以 1S1X2S3S3X4S5S5X4X2X6S6X,(1)如果进站的车厢序列为123,则可能得到的出站车厢序列是什么? (2)如果进站的车厢序列为123456,则能否得到435612和135426出站序列,并请说明为什么不能得到或如何得到。,3.4简述以下算法的功能,分析: while循环 将栈中数据依次出栈到A数组 for循环 将数组A中元素依次入栈 结果:将堆栈中的元素逆序,(1)status algol(Stack S)int I,n,A255;n = 0;while (!。
3、1,习 题 课 (12章),2,一、填空题 数据的逻辑结构被分为 、 、 和 4种. 数据的存储结构被分为 、 2种. 在线性结构、树形结构和图形结构中,直接前驱和直接后继结点之间分别存在着 、 和 的联系。 4. 一个算法应具有 、 、 输入和输出特性. 5. 一个算法的效率主要由 和 来度量。 6. 抽象数据类型包括_和_。,3,在顺序表中插入一个元素,需要平均移动 元素,具体移动的元素个数与 有关。 8. 在顺序表中逻辑上相邻的元素的物理位置 紧邻。 单链表中逻辑上相邻的元素的物理位置 紧邻。 9. 在单链表中,除了首元结点外,任一结点的存储位置由 。
4、习题课,第4章 串,4.5 试问执行以下函数会产生怎样的输出结果?,void demonstrate()StrAssign(s,THIS IS A BOOK); /1Replace(s,SubString(s,3,7),ESE ARE): /2StrAssign(t,Concat(s,S); /3StrAssign(u,XYXYXYXYXYXY); /4StAssign(v,SubString(u,6,3); /5StrAssign(w,W); /6printf(t=,t,v=,v,u=,Replace(u,v,w); /7 / demonstrate 1. s=THIS IS A BOOK 2. s=THESE ARE A BOOK 3. t=THESE ARE A BOOKS 4. u=XYXYXYXYXYXY 5. v= YXY 6. w=W 7. Replace(u,v,w)=XWXWXW输出: t=THESE ARE A BOOKS v=YXY u=XWXWXW,4.8 写出next,模式串 : ADABBA。
5、数 据 结 构,曲立平 Email: ,Page 2,19.01.2021,已知非空带头结点线性链表由list指出,链结点的结构为(data,next),请写一算法,将链表中数据域值最小的那个链结点移到链表的最前面。要求:不得额外申请新的链结点。,Page 3,19.01.2021,在带表头结点的单链表中,设计算法dellist_maxmin,删除所有数据域大于min,而小于max的所有元。
6、数据结构习题 第 5 章,吉林大学计算机科学与技术学院 谷方明,第5章作业,5-1,5-7,5-12,5-13,5-14,5-15,5-16,5-1,给出下图所示的邻接矩阵和邻接表,参考答案,参考答案:注意头指针数组,5-7,用邻接矩阵存储一个包含1000个顶点和1000条边的图,则该图的邻接矩阵中有多少元素?有多少非零元素?该矩阵是否为稀疏矩阵?,参考答案,)矩阵中元素个数:1000000)若图为有向图:非零元素的个数:1000若图为无向图:非零元素的个数:2000)该矩阵是稀疏矩阵,5-12,设计一个算法,检测采用邻接表方法存储、具有n个顶点的有向图中是否存在从顶点v到。
7、数据结构习题 第 3 章,吉林大学计算机科学与技术学院 谷方明,3-4,二维数组A有4行8列,下标从0开始,存储A的起始地址为2000,每个元素用相邻的4个字节存储,试计算: 存储整个数组一共需要多少个字节。 数组A的最后一个元素的起始地址。 按行存储时,A24的起始地址。 按列存储时,A32的起始地址。,作业情况,全对的不多有的同学不写计算过程,考试时不给分,参考答案,4*8*4=1282000+(3*8+7)*4=21242000+(2*8+4)*4=20802000+(2*4+3)*4=2044,3-8,给出如下稀疏矩阵的三元组表表示:,3-9,给出如下稀疏矩阵的十字链表表示:,参考答案,教材P65画图。
8、数据结构习题 第 7 章,吉林大学计算机科学与技术学院 谷方明,第7章作业,247页:每组的第1题是必交的,即7-2、7-5、7-18、7-24、7-497-2、7-3、 7-5、7-8、7-10、 7-18、 7-24、7-26、7-30、7-31、7-35、7-36 7-49、7-50,7-2,若对序列(7,3,1,8,6,2,4,5)按从小到大排序,请写出冒泡排序的第一趟结果。,参考答案3 ,1, 7, 6,2,4,5 , 8,7-3,设文件(R1,R2,Rn)以单链表方式表示,指针变量FIRST指向表头结点,且表中的结点结构为:其中KEY为该结点的关键词域,LINK为链接域。请给出这种线性表的直接插入排序算法,并要求算法。
9、数据结构习题 第 4 章,吉林大学计算机科学与技术学院 谷方明,第4章作业,4-2,4-3, 4-5,4-6,4-7,4-8, 4-10, 4-12,4-13,作业4-2,题目描述由三个结点A,B和C可以构成多少棵不同的树?可以构成多少棵不同的二叉树?,树有2种形态:6+3=9种二叉树有5种形态:6*5=30种,作业4-3,判断以下命题是否为真?若真,请证明之;否则,举出反例。一棵二叉树形的所有的叶结点,在先根次序、中根次序和后根次序下的排列都按相同的相对位置出现。,先根: A B C E I F J D G H K L 中根: E I C F J B G D K H L A 后根: I E J F C G K L H D B A,数学。
10、习题课一,1.5 确定下列各程序段的程序步,确定划线语句的执行次数,计算它们的渐近时间复杂度。,习题一(第18页),(1) i=1; k=0;do k=k+10*i; i+; while(i=n-1),答: 划线语句的执行次数为 n-1 。O(n),(2)i=1; x=0;dox+; i=2*i; while (in);,划线语句的执行次数为 log2n。O(log2n),(3) for(int i=1;i=n;i+)for(int j=1;j=i;j+)for (int k=1;k=j;k+)x+;,划线语句的执行次数为 n(n+1)(n+2)/6 。O(n3),(4)x=n;y=0;while(x=(y+1)*(y+1) y+;,2.1 利用线性表类LinearList提供的操作,涉及实现两个集合的交和差运算。,划线语句的执行次数为 。
11、数据结构习题 第 2 章,吉林大学计算机科学与技术学院 谷方明,有进步,很多同学的算法写得更好了有些同学开始尝试自己写算法了,作业2-1,题目描述编写算法Reverse ( A , n),将顺序存储的线性表A=( a1, a2, , an )转换为A=( an, a2, a1),要求转换过程中用尽可能少的辅助空间。,如果不限制辅助空间,辅助数组双下标i、j, 同时向中间移动,只需从线性表的第一个数据元素开始,将第i个数据元素与第n-i+1个数据元素相交换即可。在这个过程中,i的变化范围是1到 。,参考答案,算法Reverse(A,n . A) Reverse1.元素互换 FOR i=1 TO DOAi An-i+1.,作。
12、数据结构习题第6章,吉林大学计算机科学与技术学院 谷方明,6-1,递归函数F(n)=F(n-1)+n+1(n1)的递归终止条件是 . A F(0)=0 B F(1)=1 C F(0)=1 D F(n)=n,参考答案,B,6-2,函数F(x, y)定义为F(2, 1)的值是 .A 1 B 2 C 3 D 4,参考答案,D,6-3,设有一个递归算法如下: int fact (int n) if (n=0) return 1;else return fact(n-1); 下面叙述正确的是 . A 计算fact(n)需要执行n-1次递归调用 B fact(70)=5040 C 此递归算法最多只能计算到fact(8) D 以上结论都不对,参考答案,D,6-6,有如下递归函数: double pow(double x, int n) if(n = 0) return 1.0;。
13、数据结构习题 第 8 章,吉林大学计算机科学与技术学院 谷方明,第8章作业,8-4 8-7,8-8,8-9,8-10 8-13 8-22,8-23,8-4,设有关键词为A、B、C和D,按照不同的输入顺序,共可能组成多少种不同的二叉查找树。请画出其中高度较小的6种。,参考答案,以A为根的BST共5种 B为第2个元素:2种 C为第2个元素:1种(高度为2) D为第2个元素:2种 以B为根的BST共2种(高度为2) 以C为根的BST共2种(高度为2) 以D为根的BST共5种(类似A) 一共有14种。高度为2的有6种,为3的有8种,8-7,画出对长度为10的有序表进行折半查找的判定树,并求其等概率时查找成。
14、数据结构习题 第 1 章,吉林大学计算机科学与技术学院 谷方明,感谢二班、三班的学委把作业按学号排序。这是一种积极的习惯。,课堂练习,求下述计算f=1!+2!+3!+n!的算法的时间复杂性 void factorsum(int n) int i, j;int f, w;f=0;for (i=1;i=n; i+)w=1;for (j=1;j=i;j+)w=w*j;f=f+w;return; ,参考答案,以乘法为基本运算 最坏时间复杂度为T(n)=n(n+1)/2, 渐近表示法O(n2) (或算法是n2 阶的),1-2,设数据的逻辑结构为L=(N,R),其中, N=a,b,c,d,e R=r, r=, 请画出对应的逻辑结构,说明是何种结构,图型结构:a有多个后继,e有多个前。
15、习题课树,1. 递归2. 回溯策略3. 章末复习4. 例题讲解5. 课堂练习6. 作业,例题讲解,1、在结点个数为n (n1)的各棵树中,(1)高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?(2)高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点?,【答案】 (1)结点个数为n时,高度最小的树的高度为2,有2层;它有n -1个叶结点,1个分支结点;(2)高度最大的树的高度为n,有n层;它有1个叶结点,n-1个分支结点。,例题讲解,2、试分别找出满足以下条件的所有二叉树:(1) 二叉树的前序序列与中序序列相同;(2) 二叉树的中序序列。
16、习题课一,1.5 确定下列各程序段的程序步,确定划线语句的执行次数,计算它们的渐近时间复杂度。,习题一(第18页),(1) i=1; k=0;do k=k+10*i; i+; while(i=n-1),答: 划线语句的执行次数为 n-1 。O(n),(2)i=1; x=0; i k(循环次数) 2ido 1 1 21 2 2 22x+; i=2*i; 2k-1 n 2k while (in); 2kn, klog2n, k=log2n,划线语句的执行次数为 log2n。O(log2n),(3) for(int i=1;i=n;i+)for(int j=1;j=i;j+)for (int k=1;k=j;k+)x+;,划线语句的执行次数为 n(n+1)(n+2)/6 。O(n3),(4)x=n;y=0;while(x=(y+1)*(y+1) y+;,2.1 利用线性表类LinearList提。
17、1,数据结构习题课,作者:王丽萍,2,第2章 线性表,在线性表中最常用的操作是存取第i个元素及其前驱的值,采用顺序表存储方式最省时间。 某线性表中最常用的操作是存取序号为i的元素和在最后进行插入和删除运算,则采用顺序表存储方式时间性能最好。 在链表中最常用的操作是删除表中最后一个结点和在最后一个结点之后插入元素,则采用_D_最节省时间。A.带头指针的单向循环链表 B.双向链表C.带尾指针的单向循环链表 D.带头指针的双向循环链表,3,在线性表中最常用的操作是存取第i个元素及其前驱的值,可采用_ABCD_存储方式。A.顺序表 B.单向链。
18、复习课,期末考试题型及分数分布 程序填空题 重点习题讲解 考试复习提纲 考试注意事项,填空题(20分, 每空2分) 选择题(10题 ,每题2分 ,共20分) 程序填空题(2题,每空2.5分,共20分) 论述分析题(3题,共40分),一、期末考试题型及分数分布:,考试时间:第十周星期三 14:30-16:30,二、程序填空题,算法3.4 算法3.5 算法3.9 算法3.10 算法3.15 算法3.20 算法9.2 算法9.4,(一)、求下图的邻接矩阵和邻接表(P155),1、邻接矩阵,2、邻接表,三、重点习题讲解,(二)、已知一棵二叉树如图所示,试求:,(1)该二叉树前序、中序和后序遍历。