郝斌自学数据结构大纲笔记pdf高清免下载券.docVIP

郝斌自学数据结构大纲笔记pdf高清免下载券.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构概述(教材选用严蔚敏、吴伟民,该书程序是伪算法 具体的程序是高一凡,西电的,大牛,只有 程序。还有一本书,台湾的黄国瑜自己写的 只有思路,程序是另外一个合作的清华的写 的,可惜很多错的。) 学完数据结构之后会对面向过程的函数有一个更深的了解 定义 我们如何把现实中大量而复杂的问题以特定的数据类型(单 个数据怎样存储?)和特定的存储结构(个体的关系) 保存到主存储器(内存)中,以及在此基础上为实现某个功能 (比如查找某个元素,删除某个元素,对所有元素进行排序) 而执行的相应操作,这个相应的操作也叫算法。(比如班里有 15 个人,其信息量也许一个数组就搞定了,但是假如 10000 个, 怎么办?内存也许没有这么多连续的空间,所以我们改用链表, you see 这就是与存储有关系。又比如,人事管理系统的信息存储, 因为存在着上下级的关系,所以数组和链表就无能为力了, 这时候我们用树,再比如我们做的是交通图,站和站之间肯定要连通,这 时候以上的存储方式又无能为力了,所以我们又有了图。图 就是每个结点都可以和其他结点产生联系。所以当我们要解决 问题时,首先要解决的是如何把这些问题转换成数据,先保存 到我们的主存中,) 数据结构 = 个体 + 个体的关系 算法 = 对存储数据的操作 算法 解题的方法和步骤 衡量算法的标准 1、时间复杂度 大概程序要执行的次数,而非执行的时间。 2、空间复杂度 算法执行过程中大概所占用的最大内存 3、难易程度(主要是应用方面看重) 4、健壮性(不能别人给一个非法的输入就挂掉) 数据结构的地位 数据结构是软件中最核心的课程 程序 = 数据的存储+数据的操作+可以被计算机执行的语言(已经提供) (学完数据结构,想用一种语言去实现它,必须有指针,数据结构 java 版,就胡扯,变味,因为我们要讲链表,就是通过指针链在一起的。比如 在 java 中 A aa = new A();本质上,aa 是个地址) 预备知识 指针 指针的重要性:(内存是可以被 CPU 直接访问的,硬盘不行 主要靠地址总线,数据总线,控制总线。) 指针是 C 语言的灵魂 定义 地址 地址就是内存单元的编号 从 0 开始的非负整数 范围:0--FFFFFFFF[0-4G-1](地址线是 32 位,刚好控制 2 的 32 次) 指针: 指针就是地址 地址就是指针 指针变量是存放内存单元地址的变量 指针的本质是一个操作受限的非负整数(不能加乘除,只能减) 分类: 1、基本类型的指针 2、指针和数组的关系 结构体(C++中用类也能实现) 为什么会出现结构体 为了表示一些复杂的数据,而普通的基本类型变量无法满足要求 什么叫结构体 结构体是用户根据实际需要自己定义的复合数据类型 # include stdio.h #include string.h # include stdio.h struct Student { int sid; char name[200]; int age; }; int main(void) { struct Student st = {1000,zhangsan,20}; printf(%d,%s,%d\n,st.sid,st.name,st.age); st.age=25; st.sid=100000; strcpy(st.name,list); printf(%d,%s,%d\n,st.sid,st.name,st.age); return 0; } 如何使用结构体 两种方式: struct Student st = {1000, zhangsan, 20} struct Student * pst = st; // struct Student * pst; pst = st 1. st.sid 2. pst-sid // pst 所指向的结构体变量中的 sid 这个成员 注意事项: 结构体变量不能加减乘除,但可以相互赋值 普通结构体变量和结构体指针变量作为函数参数的传递 (病毒就是靠访问正在运行的那些程序所占用的内存。Java 中规定局部 变量必须初始化,因为这些变量一开始都是垃圾值,但是属性不是必须 初始化的,因为已经默认初始化为 0) 动态内存分配和释放(动态分配的内存一定要手动释放,否则造成内存 泄露。) #include stdio.h #include malloc.h int main(void) { int len; printf(请输入您需要分配数组的个数!); scanf(%d,len); int *pArr = (int*)malloc(sizeof(int)*len); *pArr = 4; pArr[1]= 5; printf(%d,%d\n,*pArr,pArr[1]); free(p

文档评论(0)

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

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

1亿VIP精品文档

相关文档