书签 分享 收藏 举报 版权申诉 / 49
上传文档赚钱

类型数据结构习题课课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5139050
  • 上传时间:2023-02-14
  • 格式:PPT
  • 页数:49
  • 大小:590.52KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《数据结构习题课课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数据结构 习题 课件
    资源描述:

    1、1作者:王丽萍2在线性表中最常用的操作是存取第i个元素及其前驱的值,采用顺序表存储方式最省时间。某线性表中最常用的操作是存取序号为i的元素和在最后进行插入和删除运算,则采用顺序表存储方式时间性能最好。在链表中最常用的操作是删除表中最后一个结点和在最后一个结点之后插入元素,则采用_D_最节省时间。A.A.带头指针的单向循环链表 B.双向链表 C.带尾指针的单向循环链表 D.带头指针的双向循环链表 3在线性表中最常用的操作是存取第i个元素及其前驱的值,可采用_ABCD_存储方式。A.顺序表 B.单向链表 C.双向循环链表 D.单向循环链表假设两个按元素值递增有序排列的线性表A和B,均以单链表作为存

    2、储结构,请编写算法,将A表和B表归并成一个按元素值递减有序排列的线性表C,并要求利用原表的(即A表和B表的)结点空间存储表C。4void merge(Linklist A,Linklist B,Linklist C)Linklist pa,pb,p;pa=A-next;pb=B-next;C=A;C-next=NULL;free(B);5while(pa&pb)if(pa-data data)p=pa;pa=pa-next;p-next=C-next;C-next=p;6elsep=pb;pb=pb-next;p-next=C-next;C-next=p;7if(!pa)while(pb)p=

    3、pb;pb=pb-next;p-next=C-next;C-next=p;8else if(!pb)while(pa)p=pa;pa=pa-next;p-next=C-next;C-next=p;9建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位,并在此链表上实现对二进制数加1的运算。(假设链表L为从低位到高位)void AddOne(Linklist L)Linklist p=L-next;while(p-next&p-data=1)p-data=0;p=p-next;10if(p-next)p-data=1;elseif(p-data=0)p-

    4、data=1;elsep-data=0;Linklist q=(Linklist)malloc(sizeof(Node);11q-data=1;q-next=NULL;p-next=q;return;12设队列中有A、B、C、D、E这5个元素,其中队首元素为A。如果对这个队列重复执行下列4操作:(1)输出队首元素;(2)把队首元素值插入到队尾;(3)删除队首元素;(4)再次删除队首元素。直到队列成为空队列为止,是否可能得到输出队列:A、C、E、C、C 13试利用栈编写计算下列递归函数的非递归形式的算法。0,m=0,n 0,m=0,n 0 0 g(m,n)=g(m,n)=g(m-1,2n)+n,

    5、m 0,n g(m-1,2n)+n,m 0,n 0 0(程序)14画出与下列已知序列对应的树T:树的先根次序访问序列为CFKDAIEBCHJ 树的后根次序访问序列为DIAEKFCJHBG(P177)树与二叉树的转换关系:树中的任意一个结点都对应于二叉树中的一个结点。树中某结点的第一个孩子在二叉树中是相应结点的左孩子,树中某结点的右兄弟结点在二叉树中是相应结点的右孩子。树的后根遍历序列 =二叉树的中序遍历序列15根据先序序列和中序序列确定二叉树将二叉树转化为树:二叉树中每个结点都对应于树中每个结点;二叉树中某结点的左孩子为树中该结点的第一个孩子;二叉树中某节点的右孩子为树中该结点的右兄弟。16假

    6、设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10构造哈夫曼树的算法步骤:(P184)找最小树:在森林F中选择两棵结点权值最小的二叉树,作为一棵新二叉树的左右子树,标记新二叉树的根结点权值为其左、右子树的根结点权值之和;删除与加入:从F中删除被选中的那两棵二叉树,同时把新构成的二叉树加入到森林F中。17(1)0.07,0.19,(1)0.07,0.19,0.020.02,0.06,0.32,0.06,0.32,0.030.03,0.21,0.10,0.21,0.10 0.020.030.0518(2 2

    7、)0.07,0.19,0.07,0.19,0.060.06,0.32,0.21,0.10,0.32,0.21,0.10,0.050.05 0.020.030.050.060.1119(3 3)0.070.07,0.19,0.32,0.21,0.19,0.32,0.21,0.100.10,0.110.11 0.020.030.050.060.110.070.170.1020(4 4)0.19,0.32,0.21,0.19,0.32,0.21,0.110.11,0.170.17 0.020.030.050.060.110.070.170.100.2821(5 5)0.190.19,0.32,0.3

    8、2,0.210.21,0.28,0.28 0.020.030.050.060.110.070.170.100.280.190.400.2122(6 6)0.320.32,0.280.28,0.400.40 0.020.030.050.060.110.070.170.100.280.190.400.210.320.6023(7 7)0.400.40,0.600.60 0.020.030.050.060.110.070.170.100.280.190.400.210.320.600.100101010101010124已知二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。int l

    9、eaf(Bitree T)if(!T)return 0;if(!T-Lchild&!T-Rchild)return 1;return(leaf(T-Lchild)+leaf(T-Rchild);25已知如图(P245,图7.30)所示的AOE-网,试求:26(1 1)每个事件的最早发生时间和最晚发生时间;事件vi的最早发生时间ve(i):从源点到顶点vi的最长路径的长度。ve(0)=0;ve(i)=Maxve(k)+dut()事件vi的最晚发生事件vl(i):在保证汇点按其最早发生时间发生这一前提下,求事件vi的最晚发生时间。vl(n-1)=ve(n-1)vl(i)=Minvl(k)-dut(

    10、)27(1 1)每个事件的最早发生时间;ve(0)=0 ve(1)=maxve(0)+dut()=5 ve(2)=maxve(0)+dut()=6 ve(3)=maxve(1)+dut(),ve(2)+dut()=12 ve(4)=maxve(3)+dut(),ve(2)+dut()=15 28(1 1)每个事件的最晚发生时间;vl(9)=ve(9)=23 vl(8)=min(vl(9)-dut()=21 vl(7)=min(vl(8)-dut()=19 vl(6)=min(vl(9)-dut()=19 vl(5)=min(vl(8)-dut()=16 vl(4)=min(vl(5)-dut(

    11、),vl(7)-dut()=15 29(2)每个活动的最早开始时间和最晚开始时间;活动ai的最早开始时间e(i):如果活动ai对应的弧为,则e(i)等于从源点到顶点j的最长路径的长度,即:e(i)=ve(j);活动ai的最晚开始时间l(i):如果活动ai对应的弧为,其持续时间为dut(),则有:l(i)=vl(k)-dut()。30每个活动的最早开始时间每个活动的最早开始时间 e()=ve(0)=0 e()=ve(0)=0 e()=ve(1)=5 e()=ve(2)=6 e()=ve(2)=6 e()=ve(3)=12 31每个活动的最晚开始时间每个活动的最晚开始时间 l()=vl(1)-du

    12、t()=4 l()=vl(2)-dut()=0 l()=vl(3)-dut()=9 l()=vl(3)-dut()=6 32给出关键路径。关键路径:从源点到汇点的最长路径的长度为完成整个工程任务所需的时间,该路径叫做关键路径。关键路径上的活动叫做关键活动。关键活动:e(i)=l(i)的活动ai即为关键活动。33已知如图(P245,图7.31)所示的有向网,试利用Dijkstra算法求顶点1到其余顶点的最短路径,并给出算法执行过程中各步的状态。34DijkstraDijkstra算法算法 对于图G=(V,E),将图中的顶点分成两组:第一组S:已求出的最短路径的终点集合 第二组V-S:尚未求出最短

    13、路径的顶点集合 算法将按最短路径长度的递增顺序逐个将第二组的顶点加入到第一组中,直到所有顶点都被加入到第一组顶点集S为止。35 终点终点从从v1到各终点的到各终点的disti值,值,pathi值的变化过程值的变化过程i=2i=3i=4i=5i=6v220(v1,v2)19(v1,v3,v2)v315(v1,v3)v429(v1,v3,v2,v4)29(v1,v3,v2,v4)v525(v1,v3,v5)25(v1,v3,v5)v645(v1,v3,v5,v6)44(v1,v3,v2,v4,v6)vkV3V2V5V4V6Sv1,v3v1,v3,v2v1,v3,v2,v5v1,v3,v2,v5,v

    14、4v1,v3,v2,v5,v4,v636(1)用Prime算法从顶点9开始,手工构造最小生成树。37PrimePrime算法:算法:假设N=(V,E)是连通网,TE为最小生成树中边的集合。初始U=,(V),TE=;在所有uU,vV-U的边中选一条代价最小的边(,)并入集合TE,同时将 并入U;重复(2),直到U=V为止。此时,TE中必含有n-1条边,则T=(V,TE)为N的最小生成树。u0u0u0v0v038(1)(2)(3)(4)39(5)(6)40(7)(8)41(9)42(2)用Kruscal算法手工构造最小生成树。假设N=(V,E)是连通网,将N中的边按权值从小到大的顺序排列。将n个顶点看成n个集合;按权值由小到大的顺序选择边,所选边应满足两个顶点不在同一个顶点集合内,将该边放到生成树边的集合中。同时将该边的两个顶点所在的顶点集合合并;重复直到所有的顶点都在同一个顶点集合内。43(1)(2)44(3)(4)45(5)(6)46(7)(8)47(9)48配色方案修改:配色方案修改:49

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:数据结构习题课课件.ppt
    链接地址:https://www.163wenku.com/p-5139050.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库