1、什么是数据结构?
程序设计=数据结构+算法
物理结构+逻辑结构=数据结构
一、4大逻辑结构:
集合结构,
线性结构,
树形结构,
图形结构,
二、物理结构
顺序存储结构,
链式存储结构,(指针也需要存储空间)
1、算法概念
不同的算法可以提高计算相同算术题的效率,那么算法的研究就变得有意义了。
2、算法的特性
输入
输出
有穷性(执行有限的步骤)
确定性(每一个步骤仅有一个含义)
可行性
3、算法设计要求
没有无法错误、有合法输入和输出
4、算法效率
度量方法:
事前分析估算方法,
5、算法时间复杂度 O(n)
key:执行次数==时间
大O阶的推导方法,
线性阶,平方阶,对数阶,
6、算法的空间复杂度
1、线性表
什么是线性表?
例如:按照学号排序的班级花名册,同一个学号不可能有2名相同的同学;
什么是抽象数据类型?
int 、float、char等这种相同类型的数据集合整合在一块称之为抽象数据类型;
什么是线性表的抽象数据类型?
什么是线性表的顺序存储结构?
插入操作、删除操作;
什么是线性表链式存储结构?
元素+指针(指向下一个元素的)
头指针、头节点
单链表读取核心思想:“工作指针后移”;
如何单链表的整表创建?
动态建立;插队方法;
头插法+尾插法
如何单链表整表删除?
2、什么是静态链表?
游标+数据+下标
插入操作、删除操作
快慢指针
3、什么是循环链表?
什么是约瑟夫问题?
什么是魔术师发牌问题+拉丁方阵?
掌握一门语言不变的性质,才能学得好程序语言。
4、什么是双向链表?
前驱节点+后继节点
多了一个prior指针
1、栈和队列
push(入栈)+pop(出栈)
进制转换,节省显示空间。
2、栈的链式存储结构
逆波兰表达式(RPN);
逆波兰计算器
数据结构和算法的作用:
中缀表达式转换为后缀表达式
3、什么是队列?
1、递归
2、顺序存储二叉树
通常情况只考虑完全二叉树;
堆排序
3、线索二叉树