一.概论部分
1.数据结构
数据是描述客观事物且能被计算机识别并加工处理的对象
数据结构是相互之间存在一种或多种特定关系的数据元素的集合
数据及结构包括数据元素的逻辑结构、存储结构和相适应的运算
逻辑结构包括:结合结构、线性结构、树形结构和网状结构
存储结构包括:顺序存储:位置关系表示逻辑关系(相邻关系)
链式存储:用指针表示逻辑关系
索引存储:索引表
散列存储:hash函数
2.算法
算法是建立在数据结构基础上的求解问题的一系列确切的步骤
算法的五个特性:有效性、确定性、有穷性、输入、输出
时间复杂度和空间复杂度
几个常见的复杂度:O(1)、O(log n)、O(n)、O(nlog n)、O(n^2)、O(n^3)、O(2^n)
二.线性部分
3.线性表
所谓线性表是指n个具有相同特性的数据元素的有限序列
线性表所含的数据元素个数n称为线性表的长度
把长度为0的线性表称为空线性表
线性表的基本运算:初始化运算、判空运算、判满运算、创建运算、求长度运算、
查找运算、插入运算、删除运算、访问运算、输出\打印运算、撤销运算
采用链式存储的线性表称为链表
结点包括两个域:数据域、指针域
每个结点只有一个指针域的称为单链表
相对于头结点而言,其余结点都称为表结点
双向链表里包含其直接前驱和直接后继两个指针域
循环单向链表和循环双向链表
4.栈
栈是一种运算受限的线性表,它限定只能在表的一端进行插入和删除操作
其中,允许插入和删除的一端称为栈顶,另一端称为栈底
不包含任何数据元素的栈称为空栈
采用顺序存储的栈简称为顺序栈
采用链式存储的栈称为链栈
两个方向生长的栈是指,两个栈共享一个向量空间,向量空间的两端分别为两个栈的栈底,两个栈的栈顶朝着向量空间的中部进行生长
5.队列
队列是一种运算受限的线性表,它限定在表的一端进行插入操作,在表的另一端进行删除操作
允许插入的一端称为队尾,允许删除的一端称为队首
采用顺序存储的队列称为顺序队列,队列的顺序存储结构是指用一组地址连续的存储单元来一次存放自队首到队尾的数据元素
采用链式存储的队列称为链队列,链队列的结点结构和链表的结点结构相同
双端队列也称为双排队,它允许插入和删除操作可以在表的任何一端进行
队列和栈的共性:它们都是运算受限的线性表,都是限定在表的端点处进行插入和删除操作
队列和栈的个性:栈是限定在表的一端进行插入和删除运算,因此具有了“后进先出”的结构特性;
队列是限定在表的一端进行插入运算,另一端进行删除运算,因此具有了“先进先出”的结构特性
6.串
串是一种数据元素受限的线性表,它的每个数据元素限定为仅由一个字符组成
将串中所含字符的个数n称为串长
将不包含任何字符的串称为空串
将由一个或多个空格组成的串称为空格串
将串中任意个连续字符组成的子序列称为该串的子串,将包含这个子串的串称为主串
线性表的运算大多以“单个数据元素”为操作对象,而串操作通常以“串的整体”或“子串”作为操作对象
串相等是指两个串的串值相等,即两个串的长度相等且它们对应位置上的字符相同