没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
郝斌数据结构自学笔记
--知识点+程序源代码
2017.05 By-MuRong
什么叫做数据结构
数据结构概述
定义
我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存
储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,
对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。
数据结构个体的存储个体的关系存储
算法对存储数据的操作
衡量算法的标准
算法
解题的方法和步骤
衡量算法的标准
)时间复杂度:大概程序执行的次数,而非执行的时间
)空间复杂度:算法执行过程中大概所占用的最大内存
)难易程度
)健壮性
数据结构的特点
数据结构的地位
数据结构是软件中最核心的课程
程序数据的存储数据的操作可以被计算机执行的语言
预备知识指针
预备知识指针
指针的重要性:
指针是 语言的灵魂
定义:
地址:
地址是内存单元的编号从 开始的非负整数,范围:【】
地址线,控制线,数据线内存
指针:
指针就是地址,地址就是指针。
指针变量是存放内存单元地址的变量。
指针的本质是一个操作受限的非负整数。
分类:
基本类型的指针
指针和数组的关系
变量并不一定连续分配,随机分配内存。
内存:
内存是多字节组成的线性一维存储空间。
内存的基本划分单位是字节。
每个字节含有 位,每一位存放 个 或 个
内存和编号是一一对应的。
软件在运行前需要向操作系统申请存储空间。在软件运行期间,该软件所占空间不再
分配给其他软件。当软件运行完毕后,操作系统将回收该内存空间(操作系统并不清空该
内存空间中遗留下来的数据)。
:)指针变量也是变量,普通变量前不能加,常亮和表达式前不能加。
)局部变量只在本函数内部使用。
如何通过被调函数修改主调函数中普通变量的值。
)实参为相关变量的地址;
)形参为以该变量的类型为类型的指针变量;
)在被调函数中通过 形参变量名的形式 的形式就可以修改主函数。
!"#$%&"'()
&*+,-'".
/
&01 220 是个变量名字,&表示该 0 变量只能存储 & 类型变量的地址
&1
&31
22 301
22 045,67"863.1 22#44'40 未指定
22 (+4(991
22 0(1 22#44'4,类型不一致
01220 保存 的地址,0 指向 ;修改 0 的值不影响 的值,修改 的值不影响 0 的值;
任何场合下,0 和 可以互换。0 等价于 。
2201 22#44'4
30122等价于 31
045,67"37"07"8630.1
4#&!41
:
!"#$%&"'()
-'";,&.22不是定义了一个名字叫做 的形参,而是定义了一个形参,该形参名字叫做
,它的类型是 &
/
1
:
&*+,-'".
/
&<1
;,.1 22局部变量只在本函数内部使用。
045,67"86.1
:
指针和数字
数组名:一维数组名是个指针变量,它存放的是一维数组第一个元素的地址,它的值不能
被改变,一维数组名指向的是数组的第一个元素。
+=>,+.1=+>,+.,+.1
&+=>/:1
('?+44@,+.122+ 等价于+=>+=>本身就是 &类型
-'"('?44+@,&0& #.
/
A&A1
22=>1220=>010=>,0.,+.+=>10=>就是主函数的 +=>
;'4,1$ #*1.
045,B7"8C0=>.1
:
指针变量的运算
指针变量不能相加,不能相乘,不能相除。
如果两指针变量属于同一数组,则可以相减。
指针变量可以加减一整数,前提是最终结果不能超过指针变量
0 的值是 0,0 所指向的变量所占的字节数.
0 的值是 0,0 所指向的变量所占的字节数.
0$)00$)
D所有的指针变量只占 个子节 用第一个字节的地址表示整个变量的地址
"'!E #01
"'!E #FDDD1 22一个 "'!E # 占 个字节
0F122F 占 个字节, 个字节是 位, 个字节一个地址,0 内只存放了一个地址,通常
是字节的首地址
"'!E #+44=>/:1
"'!E #G1
G+44=>1
045,B708CG.1 2270 实际就是以十六进制输出
G+44=>1
G045,B708CG.1 220G 相差
无论指针指向的变量占多少个字节,指针变量统一都只占 个字节
H如何通过函数修改实参的值
发送地址
修改指针变量的值,只能修改地址
-'";,&.1
&*+,-'".
/
&<1
&0122 0101
045,B708C0.1
;,0.1
045,B708C0.1
4#&!41
:
22-'";,&G.
22/
22 G,&.FIIII122错误,不会改变 0 的值
22:
-'";,&G.
/
G,&.FIIII1
:
结构体的使用概述
结构体
为什么会出现结构体:
为了表示一些复杂的数据,而普通的基本类型变量无法满足要求
什么叫做结构体:
结构体是用户根据实际需要自己定义的复合数据类型
如何使用结构体:
两种方式——
%&4!&&!"#&%&/CJ(+K%+C:1
%&4!&&!"#&0%&%&1
.通过结构体变量名来实现
%&%"
.通过指向结构体变量的指针来实现【重点】
0%&)%"
0%& 所指向的结构体变量中的 %" 这个成员
!"#$%&"'()
!"#$%&4K()
%&4!&&!"#&
/
&%";
(+4+*#=>1
&+K#1
:1 22分号不能省
A&*+,-'".
/
%&4!&&!"#&%&/CJ(+K%+C:1
045,B7"7%7"8C%&%"%&+*#%&+K#.1
045,B7"7%7"8C%&.1 22#44'4
%&%"<<1 22第一种
22%&+*#C %C1 22#44'4
%&40@,%&+*#C %C.1
%&+K#1
%&4!&&!"#&0%&1
0%&%&1 22第二种
0%&)%"<<1 220%&)等价于,0%&.%",而,0%&.%" 等价于 %&%",所以 0%&)%" 等价于
%&%"
L#&!41
:
注意事项:
结构体变量不能加减乘除,但可以相互赋值
普通结构体变量和结构体指针变量作为函数传参的问题
!"#$%&"'()
%&4!&&!"#&
/
&%";
(+4+*#=>1
剩余61页未读,继续阅读
资源评论
- qq10271656212017-12-08还可以,就是感觉有点乱.
你不是我,这就是差别
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功