数据结构63392.pptVIP

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
教材 主教材 《数据结构(C语言版)》 严蔚敏 吴伟民 编著 清华大学出版社 参考教材 《计算机程序设计的艺术》 1-4卷 唐纳德?克努特(Donald Ervin Knuth) 斯坦福大学出版社 课程性质 数据结构是计算机专业的专业基础课公共基础课、专业基础课、专业方向课、专业选修课 在教学计划中的地位:核心、承上启下前导课:高等数学、离散数学、程序设计语言后续课:数据库、操作系统、编译原理…… 属于武术中的“练功”科目“练武不练功,到头一场空” 考研 学习目标 掌握基本的数据结构工具箱→复用、修改、重组 培养算法设计能力、程序设计能力算法——程序的灵魂问题求解过程:问题→想法→算法→程序程序设计研究的层次:算法→方法学→语言→工具 培养算法分析能力评价算法、改进算法 学习要求 循序渐进,切忌心浮气躁提高课外学习的时间和内容理解科学而不是背诵科学→读书正确对待考试 作习题华罗庚:“学数学不做习题等于入宝山而空返” 作实验计算机学科是一门科学性与工程性并重的学科,表现为理论和实践紧密结合的特征。 成绩组成 平时成绩20%:出勤+作业+报告 实验成绩10%:出勤+程序+报告 期末考试成绩70%:接近同类学校考研水平 课程设计成绩:优、良、中、及、不及 数据、数据元素、数据项之间的关系 包含关系:数据是由数据元素组成,数据元素是由数据项组成。 数据元素是讨论数据结构时涉及的最小数据单位,其中的数据项一般不予考虑。 数据结构从逻辑上分为四类: ⑴ 集合:数据元素之间就是“属于同一个集合” ; 数据结构从逻辑上分为四类: ⑴ 集合:数据元素之间就是“属于同一个集合” ; ⑵ 线性结构:数据元素之间存在着一对一的线性关系; 数据结构从逻辑上分为四类: ⑴ 集合:数据元素之间就是“属于同一个集合” ; ⑵ 线性结构:数据元素之间存在着一对一的线性关系; ⑶ 树结构:数据元素之间存在着一对多的层次关系; 数据结构从逻辑上分为四类: ⑴ 集合:数据元素之间就是“属于同一个集合” ; ⑵ 线性结构:数据元素之间存在着一对一的线性关系; ⑶ 树结构:数据元素之间存在着一对多的层次关系; ⑷ 图结构:数据元素之间存在着多对多的任意关系。 通常有两种存储结构: 1. 顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。 通常有两种存储结构: 1. 顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。 2. 链接存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示 。 逻辑结构和存储结构之间的关系 数据的逻辑结构属于用户视图,是面向问题的,反映了数据内部的构成方式;数据的存储结构属于具体实现的视图,是面向计算机的。 一种数据的逻辑结构可以用多种存储结构来存储,而采用不同的存储结构,其数据处理的效率往往是不同的。 有穷性 一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。以下例子不満足有穷性。 haha() { /*only a joke,do nothing.*/ } main() { printf(请稍等...您将知道世界的未日...); while(1) haha(); } 确定性 算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。在相同的条件下,算法对于相同的输入只能得出相同的输出。以下例子不満足确定性。 float average(int *a,int num) /* num为数组a元素个数 */ { int i;double sum=0;for(i=0;i=num;i++) /* a[num]没有定义 */sum+=*(++a);return sum/num; } main() { int score[9]={1,2,3,4,5,6,7,8,9}; printf(%f,average(score,9)); } 可行性 一个算法是能行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。 输入 一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。 输出 一个算法有一个或多个的输出。这些输出是同输入有着某些特定关系的量。 getsum(int num) { int i,sum=0; for(i=1;i=num;i++)sum+=i; } /* 无输出的算法没有任何意义 */欧几里德算法 算法效率的度量 一个用高级程序设计语言编写的程序在计算机上运行所需时间与下列因素有关: (1)机器执行指令的速度。 (2)编译程序所产生的机器代码质量。 (3)

文档评论(0)

dreamzhangning + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档