数据结构作业及答案 (C语言版).

Slides:



Advertisements
Similar presentations
教师手册 教师职业守则(全体教师) 中文教学工作细则(中文、双语教师) 中文教师业绩评估(中文、双语教师)
Advertisements

參訪堪薩斯市美國退伍軍人醫療中心( Kansas City VA Medical Center)心得報告
丁 频 农业及食品饮料行业高级分析师 贺菊颖 中药行业分析师 王友红 化学制药及生物制药行业分析师 路 颖 商业贸易行业首席分析师 1.
福嚴校友「佛學研習營」 活動內容 ●主辦單位:福嚴佛學院校友會 ●協辦單位:元亨寺 ●活動地點:元亨寺 ●活動時間:2008/4/14~15.
第 9 章 查找.
淡水泉投资:安全稳健低回撤 长期业绩卓著 产品基本信息 基金经理简介 产品全称 银河证券-盘晟淡水泉成长1号 基金经理 赵军 受托人
第九章 查找.
主讲:计算机工程学院 李兰 答疑地点:主教学楼B区213
全面预算管理培训 北大纵横管理咨询公司 2003年10月.
数据结构——树和二叉树 1/96.
助教:李伟力 电子科学与技术系 数据结构第二次习题课 助教:李伟力 电子科学与技术系
第六章 树和二叉树.
第九章. 查找 (Chapter 9. Searching)
第9章 查找 9.1 基本概念和术语 9.2 静态查找表 9.3 动态查找表 9.4 哈希表 9.5 小结 顺序查找
数据结构 (DATA STRUCTURE).
Introduction 中德電子材料股份有限公司為美商SunEdison Semiconductor Limited(SSL) (前MEMC) 在臺之分公司。 SunEdison Semiconductor於日本、韓國、義大利及馬來西亞,均有工廠據點。 中德成立時間:民國83年09月。 網址:
第7章 查找 丽水学院工学院.
目 次 研究動機 簡介 產品 服務 品牌決策 SWOT分析.
第四組-HTC宏達電 林杕亞497E0031 沈姿菁497E0096 黃亭睿497E0102.
其他类型的链表主要内容 静态链表 循环链表 双向链表.
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
第九章查找.
資料結構 第5章 佇列.
增员有方 L区 特别事务助理总监陈蕴梅 ACS ALS.
强连通分量 无向图 1、任意两顶点连通称该图为连通图 2、否则将其中的极大连通子图称为连通分量 A D C B E 有向图
教 师:曾晓东 电 话: E_mail: 计算机软件技术基础 教 师:曾晓东 电 话: E_mail:
第3章 栈和队列(二) 1/.
第十章 C高级程序应用—链表* 10.1链表的基本概念 10.2单向链表 10.3双向链表 10.4应用举例.
研究地月距離的變化.
第八章 查找表 8.1概述 8.2静态查找表 8.3动态查找表 8.4哈希表及其查找.
第三章 栈与队列 £3.1 栈 £3.3 队列 £3.2 栈的应用举例 £3.1.1 栈的定义 £3.1.2 栈的顺序存储结构
第三章 栈和队列 3.1 栈 3.2 栈的应用举例 3.3 栈与递归的实现 3.4 队列.
第三章 栈和队列.
数据结构 Data Structure 中南大学 主讲人:王国军,郑瑾 中南大学信息院计科系
数据结构 复习课 王彦 博士,副教授
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
内容回顾 线性表的定义和特点 线性表的顺序存储及查找、插入和删除.
第7章 查找 本章中介绍下列主要内容: 静态查找表及查找算法:顺序查找、折半查找 动态查找表及查找算法:二叉排序树 哈希表及查找算法.
第11讲 树和二叉树(二).
图内容回顾 图 Dijkstra算法 最短路径 Floyd算法 拓扑排序 邻接矩阵 有向图的应用 DAG图 关键路径 邻 接 表 存储结构
报告人:陈思同 数据结构与数据库习题课 报告人:陈思同
cn/~dongeliu/dsa.html 刘 东 信息学院6系 中国科学技术大学
第三章 栈和队列.
数据结构与数据库 习题课(2) 2016年11月25日.
严蔚敏、吴伟民编著 清华大学出版社 学习网站:
P ANNUAL REPORT DESIGN BY PENELOPE ENTER THE TIME
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
无向树和根树.
第三章 栈和队列 第二部分 队列(Queue) 2019/4/8.
数据结构学位考 复习课(3) 主要内容: 1. 图 2.查找、排序.
顺序表的删除.
单链表的基本概念.
顺序查找.
第 四 讲 线性表(二).
树和二叉树(一).
树和图 tree and graph 蔡亚星.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第七、八次实验要求.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
第8章 查找 预备知识 8.1 静态查找表 8.2 动态查找表 8.3 哈希表.
11月份豆油价格区间震荡 宏源期货农产品团队 张磊 2011年10月29日.
第七讲 栈和队列(二) 1/.
第三章 线性表 3.1 线性表的类型定义 3.2 顺序存储的线性表 3.3 链式存储的线性表 3.4 有序表 3.5 顺序表和链表的综合比较.
4.2 图的存储结构(cont.) v1 v2 v3 v4 v5 vertex= v1 v2 v3 v4 v5 v
Chapter 2 Entity-Relationship Model
插入排序的正确性证明 以及各种改进方法.
第9章 查找 9.1 查找的基本概念 9.2 线性表的查找 9.3 树表的查找 9.4 哈希表查找.
本节内容 1. 平衡二叉树的定义 2.平衡化旋转 3.平衡二叉排序树的插入操作 昆山爱达人信息技术有限公司
第二章 线性表 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
最小生成树 最优二叉树.
Presentation transcript:

数据结构作业及答案 (C语言版)

目 录 1、第2章 线性表 2、第3章 栈和队列 3、第6章 树和森林 4、第7章 图 5、第8章 集合与查找 6、第9章 索引与散列

第2章 线性表作业及答案1-1 1、已知有一个单链表L,设计一个算法,通过一趟遍历,在L中确定值最大的结点,返回指向该结点的指针。(注:遍历是指从头至尾访问单链表中的每一个结点且指访问一次) LNode *Max(LinkList head) { if (headnext==NULL) return NULL; //空表 LNode *pmax=headnext; //pmax从第一个结点开始 LNode *p=headnextnext; //p从第二个结点开始 while (p!=NULL) { if (pdata > pmaxdata) pmax=p; p=pnext; } return pmax; 【解答】设LNode为单链表结点结构,LinkList为LNode*,head为单链表的头指针

第2章 线性表作业及答案1-2 2、设计一个算法,在非递减有序的单链表L中删除值相同的多余结点 第2章 线性表作业及答案1-2 2、设计一个算法,在非递减有序的单链表L中删除值相同的多余结点 void delete_duplicate(LinkList head) { LNode *p=headnext; LNode *temp=NULL; while (p!=NULL && pnext!=NULL) { if (pdata == pnextdata) { temp=pnext; pnext=tempnext; delete temp; } else p=pnext; 【解答】设LNode为单链表结点结构,LinkList为LNode*,head为单链表的头指针

第3章 栈和队列作业及答案2-1 假设以数组Q[m]存放循环队列中的元素,同时设置一个标志tag==0和tag==1来区别当队头指针front和队尾指针rear相等时,队列的状态是“空”还是“满”。试编写与此结构相应的入队(EnQueue)和出队(DeQueue)算法。要求先写明结构,再写算法 #define MAXQSIZE 100 typedef struct { ElemType *base; int front, rear, tag; } SqQueue; int IsEmpty(SqQueue Q) { return(Q.front==Q.rear && Q.tag==0); } int IsFull(SqQueue Q) { return(Q.front==Q.rear && Q.tag==1); 【解答】

第3章 栈和队列作业及答案2-2 Status EnQueue(SqQueue &Q, ElemType e) { 第3章 栈和队列作业及答案2-2 Status EnQueue(SqQueue &Q, ElemType e) { assert(!IsFull(Q)); Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MAXQSIZE; Q.tag=1; //标志改1,表示队列非空 return OK; } Status DeQueue(SqQueue &Q, ElemType &e) { assert(!IsEmpty); e=Q.base[Q.front]; Q.front=(Q.front+1)%MAXQSIZE; Q.tag=0; //标志改0,表示队列不满

第6章 树和森林作业及答案4-1 1、编写递归算法,统计二叉树中度为2的结点个数 【解答】 第6章 树和森林作业及答案4-1 1、编写递归算法,统计二叉树中度为2的结点个数 int degree2(BiTree root) { if (!root) return 0; //叶结点 if (rootlchild && rootrchild) //度为2的结点 return 1+degree2(rootlchild) +degree2(rootrchild); else return degree2(rootlchild) //度为1的结点 } 【解答】

第6章 树和森林作业及答案4-2 2、给定权值集合{ 15, 3, 14, 2, 6, 9, 16, 17 },构造相应的Huffman树,并计算它的带权路径长度(要求画出Huffman树的构造过程) 【解答】 15 3 14 2 6 9 16 17 F : 15 F : 14 6 9 16 17 5 2 3 15 F : 14 6 9 16 17 5 2 3 11

第6章 树和森林作业及答案4-3 15 F : 14 6 9 16 17 5 2 3 11 20 15 F : 14 6 9 16 17 5 2 3 11 20 29 F : 6 9 16 17 5 2 3 11 20 33 15 14 29

第6章 树和森林作业及答案4-4 此树的带权路径长度WPL=229 F : F : 15 14 29 6 9 5 2 3 11 20 16 第6章 树和森林作业及答案4-4 15 14 29 6 9 5 2 3 11 20 16 17 33 49 F : 15 14 29 6 9 5 2 3 11 20 16 17 33 49 82 F : 此树的带权路径长度WPL=229

第7章 图作业及答案5-1 1、用数学归纳法证明有n个顶点的完全无向图有n(n-1)/2条边 【证明】 第7章 图作业及答案5-1 1、用数学归纳法证明有n个顶点的完全无向图有n(n-1)/2条边 【证明】 (1) 当n=1时,一个顶点时,边数为0,成立。 (2) 当n=2时,两个顶点,边数为1,成立。 (3) 设n=k时成立,即k个顶点的完全无向图有k(k-1)/2条边,则n=k+1时,第k+1个顶点到其他k个顶点的边数共k条,于是总边数为 k(k-1)/2+k=(k+1)k/2。  结论成立。

第7章 图作业及答案5-2 2、对于如图所示的有向图,试画出从顶点①出发进行深度优先搜索得到的深度优先生成树 1 2 4 3 5 【解答】 1 2 3 4 5 结果不唯一

第8章 集合与查找作业及答案6-1 将关键字{ DEC, FEB, NOV, OCT, JUL, SEP, AUG, APR, MAR, MAY, JUN, JAN }依次插入到一棵初始为空的AVL树中,画出每插入一个关键字后的AVL树,需要平衡时标明平衡旋转的类型和结果(注:按字典顺序比较) DEC FEB NOV DEC DEC FEB DEC FEB NOV 左单旋 DEC FEB NOV OCT DEC FEB NOV OCT JUL SEP DEC FEB NOV OCT JUL 左单旋 DEC FEB NOV OCT JUL SEP

第8章 集合与查找作业及答案6-2 DEC FEB NOV OCT JUL SEP AUG DEC FEB NOV OCT JUL SEP 第8章 集合与查找作业及答案6-2 DEC FEB NOV OCT JUL SEP AUG DEC FEB NOV OCT JUL SEP AUG APR 右单旋 DEC FEB NOV OCT JUL SEP AUG APR DEC FEB NOV OCT JUL SEP AUG APR MAR

第8章 集合与查找作业及答案6-3 DEC FEB NOV OCT JUL SEP AUG APR MAR MAY FEB NOV OCT 第8章 集合与查找作业及答案6-3 DEC FEB NOV OCT JUL SEP AUG APR MAR MAY FEB NOV OCT JUL SEP AUG APR MAR MAY 左单旋 DEC FEB NOV OCT JUL SEP AUG APR MAR MAY DEC JUN 先左后右 FEB NOV OCT JUL SEP AUG APR MAR MAY DEC JUN

第8章 集合与查找作业及答案6-4 FEB NOV OCT JUL SEP AUG APR MAR MAY DEC JUN JAN FEB 第8章 集合与查找作业及答案6-4 FEB NOV OCT JUL SEP AUG APR MAR MAY DEC JUN JAN FEB NOV OCT JUL SEP AUG APR MAR MAY DEC JUN JAN

第9章 索引与散列作业及答案7-1 给定关键字序列{ 11, 78, 10, 1, 3, 2, 4, 21 },分别用顺序查找、折半查找、二叉排序树、平衡二叉树、散列表(用线性探查法和链地址法)实现查找,画出它们对应的存储结构(顺序查找的顺序表,折半查找的二叉判定树,二叉排序树、平衡二叉树以及两种散列表),并求出每一种查找在等概率下查找成功时的ASL。其中,散列表为HT[11],散列函数为H(key)=key%11 【解答】(1) 顺序查找的顺序表(一维数组)如图所示, 11 78 10 1 3 2 4 21 1 2 3 4 5 6 7 8 9 10

第9章 索引与散列作业及答案7-2 可以得到顺序查找的平均查找长度为:ASL=(1+2+3+4+5+6+7+8)/8=(8+1)/2=4.5 第9章 索引与散列作业及答案7-2 可以得到顺序查找的平均查找长度为:ASL=(1+2+3+4+5+6+7+8)/8=(8+1)/2=4.5 (2) 先按关键字排序,折半查找的判定树如图所示, 4 2 1 3 11 10 21 78 从图可以得到折半查找的平均查找长度为: ASL=(1+2*2+3*4+4*1)/8=21/8=2.625

第9章 索引与散列作业及答案7-3 (3) 二叉排序树和平衡二叉树如图所示, 第9章 索引与散列作业及答案7-3 (3) 二叉排序树和平衡二叉树如图所示, 11 10 78 1 21 3 2 4 ( a) 二叉排序树 (b) 平衡二叉树 从图可以得到二叉排序树查找的平均查找长度为:ASL=(1+2*2+3*2+4*1+5*2)/8=25/8=3.125 平衡二叉树的成功平均查找长度为:ASL=(1*1+2*2+3*3+4*2)/8=22/8=2.75

第9章 索引与散列作业及答案7-4 (4) 线性探查法解决冲突的散列表如图所示, 第9章 索引与散列作业及答案7-4 (4) 线性探查法解决冲突的散列表如图所示, 11 78 1 3 2 4 21 10 0 1 2 3 4 5 6 7 8 9 10 从图可以得到线性探查法的平均查找长度为 ASL=(1+1+1+2+1+3+2+8)/8=19/8=2.375 (5) 链地址法解决冲突的散列表如图所示,

第9章 索引与散列作业及答案7-5 从图可以得到链地址法的平均查找长度为:ASL=(1*6+2*2)/8=10/8=1.25 1 2 3 4 第9章 索引与散列作业及答案7-5 1 2 3 4 5 6 7 8 9 10 ^ 78 11 21 从图可以得到链地址法的平均查找长度为:ASL=(1*6+2*2)/8=10/8=1.25

The End