数据结构概述
定义:我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。
数据结构 = 个体 + 个体的关系
算法 = 对存储数据的操作
算法:
解题的方法和步骤
衡量算法的标准:
1.时间复杂度
大概程序要执行的次数,而非执行的时间
2.空间复杂度
算法执行过程中大概所占用的最大内存
3.难易程度
4.健壮性
数据结构的地位
数据结构是软件中最核心的课程
程序 = 数据的存储 + 数据的操作 + 可以被计算机识别的语言
预备知识
指针
指针的重要性:指针是c语言的灵魂
定义:地址:内存单元的编号
地址:
指针就是地址 地址就是指针
指针变量是存放内存单元地址的变量
指针的本质是一个操作受限的非负整数
分类:
1.基本类型的指针
2.指针和数组的关系
结构体
为什么会出现结构体
为了表示一些复杂的数据,而普通的基本类型变量无法满足要求
什么叫结构体
结构体是用户根据实际需要自己定义的复合数据类型
如何使用结构体
struct student st = {1.,“张三”,20};
struct student * pst = &st;
1.st.sid
2.pst->sid
动态内存的分配和释放
malloc函数
模块一:线性结构
连续存储:数组
离散存储:链表
线性结构的两种常见应用之一 栈
线性结构的两种常见应用之一 队列
专题:递归
1. 1+2+3+4+...+100的和
2.求阶乘
3.汉诺塔
4.走迷宫
模块二:非线性结构
树 图
模块三:查找和排序
择半查找
排序:冒泡 插入 选择 快速排序 归并排序