数据结构笔记第1章

数据结构定义

我们如何把现实中大量而复杂的问题一特定的数据类型和疼定的存储机构保存到主存储器(内存)中,一节在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。

数据结构=个体+个体的关系
算法=对存储数据的操作

衡量算法的标准

1.时间复杂度 大概程序要执行的次数,而非执行的时间
2.空间复杂度
3.难易程度
4.健壮性

内存

1.内存是用来存储数据的设备,他的存储速度结余寄存器和硬盘之间;
2.内存是CPU唯一可以访问的大容量的存储设备!所有硬盘中的程序和数据必须调入内存之后方可被CPU执行!切记:CPU不能直接处理硬盘中的数据!
3.内存的问题是软件开发中最核心的问题之一!如:内存的分配,内存的释放,内存什么时候分配,内存什么时候释放,由谁来分配,分配在什么地方,访问权限如何!
4.内存是多字节组成的线性一维存储空间
5.内存的基本划分单位是字节
6.每个字节含有8位,每一位 存放1个0或者1个1
7.字节和编号是一一对应的。每个字节都有一个唯一确定的编号,一个编号对应一个字节!这个编号叫做地址
8.一个系统所能管理的内存空间的大小取决于参与编号的二进制位数!

软件运行与内存关系 : 内存是在操作系统的统一管理下使用的!

1.软件在运行前需要向操作系统申请存储空间,在聂村空闲空间足够是,操作系统将分配一段内存空间并将外存中软件拷贝一份存入空间中,并启动该软件的运行!
2.在软件运行期间,该软件所占内存空间不再分配给其他软件
3.当软件运行完毕后,操作系统将回收该内存空间(注意:操作系统并不清空该内存空间中遗留下来的数据),以便再次分配给其他软件使用
综上所述,一个软件所分配到的空间中极可能存在着以前其他软件使用过后的残留数据,这些数据被称之为垃圾数据。所以通常情况下我们为一个变量,为一个数组,分配好存储空间之后都要对该内存空间初始化!

程序结构的地位
数组结构是软件中最核心的课程

程序=数据结构的存储 + 数据的操作 + 可以被计算机执行的语言

预备知识
指针
指针的重要性:

表示一些复杂的数据结构
快速的传送数据
使函数返回一个以上的值
能否直接访问硬件
能够方便的使用数组和字符串
是理解面向对象语言中引用的基础
指针是C语言的灵魂

定义

地址:内存单元的编号;从0开始的非负整数;范围0-FFFFFFFF【0到4G-1】
指针:指针就是地址,地址就是指针;指针变量就是存放内存单元地址的变量;指针本质上就是一个操作受限的非负整数

分类
1、基本类型指针

基本概念
1.如一个指针变量(假定为p)存放了某个普通变量(假定为i)的地址,那我们就可以说:“p指向了i”,但p与i是两个不同的变量,修改p的值不影响i的值,修改i的值不影响p的值
2.*p等价于i  或者说*p可以与i在任何地方互换
3.如果一个指针指向了某个普通变量,则 *指针变量 就完全等价于 该普通变量
注意:
1.指针变量也是变量,只不过它存放的不能是内存单元的内容,只能存放内存单元
2.普通变量前不能加*
3.常量和表达式前不能加&
如何通过被调函数修改主调函数中普通变量的值
1.实参为相关变量的地址
2.形参为以该变的类型为类型的指针变量
3.在被调函数中通过 *形参变量名 的方式就可以修改主函数

2、指针和数组

指针 和 一维数组
数组名
1.一维数组名是个指针常量;
2.它存放的是一维数组第一个元素的地址
3.它的值不能被改变
4.一维数组名指向的是数组的第一个元素
下标和指针的关系:a[i]<<==>>*(a+i)
如何通过被调函数修改主调函数中一维数组的内容
    两个参数
        存放数组首元素的指针变量
        存放数组元素长度的整形变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值