本人学习笔记,仅供自己查阅
线性表 是最常用且最简单的一种数据结构。
线性表的顺序存储结构的特点:逻辑关系上相邻的两个元素在物理位置上也相邻。查询方便,插入或删除操作时,需移动大量元素。
线性表的链式存储结构的特点:不要求逻辑上相邻的元素在物理位置上也相邻。插入或删除操作方便,但查询速度慢,不能随机存取。
链式存储结构:数据域和指针域
数据域:存储数据元素信息的域;
指针域:存储直接后继存储位置的域,指针是 数据元素之间的逻辑关系的映像。
循环链表、双向链表、静态链表
栈
栈:限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有特殊含义,称为栈顶(top),相应地,表头端称为栈底(bottom)。
栈又称 后进先出(last in first out)的线性表(简称LIFO结构)
栈的应用举例:
数制转换、括号匹配的检验、行编辑程序、迷宫求解、表达式求解(操作数栈、运算符栈)、栈与递归的实现(Hanoi塔的问题)
队列
队列:只允许在表的一端进行插入,而在另一端删除元素。是一种 先进先出(first in first out,缩写为FIFO)的线性表。
在队列中,允许插入的一端叫做队尾(rear),允许删除的一端称为对头(front)。
串(字符串)
计算机上的非数值处理的对象基本上是字符串数据。在不同类型的应用中,所处理的字符串具有不同的特点,要有效地实现字符串的处理,就必须根据具体情况使用合适的存储结构。
值得一提的是,串值必须用一对单引号括起来,但单引号本身不属于串,它的作用只是为了避免与变量名或数的常量混淆而已。
串的逻辑结结构和线性表极为相似,区别仅在于字符集。
定长顺序存储表示
堆分配存储表示:仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中动态分配而得的。在C语言中,存在一个称之为“堆”的自由存储区。
块链存储表示:链表方式存储串值
串的模式匹配算法:朴素模式匹配、KMP算法