数据结构~线性表(二)

本人学习笔记,仅供自己查阅


 线性表 是最常用且最简单的一种数据结构。

线性表的顺序存储结构的特点:逻辑关系上相邻的两个元素在物理位置上也相邻。查询方便,插入或删除操作时,需移动大量元素。

线性表的链式存储结构的特点:不要求逻辑上相邻的元素在物理位置上也相邻。插入或删除操作方便,但查询速度慢,不能随机存取。


链式存储结构:数据域和指针域

数据域:存储数据元素信息的域;

指针域:存储直接后继存储位置的域,指针是 数据元素之间的逻辑关系的映像。

循环链表、双向链表、静态链表


栈:限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有特殊含义,称为栈顶(top),相应地,表头端称为栈底(bottom)。

栈又称 后进先出(last in first out)的线性表(简称LIFO结构)

栈的应用举例:

数制转换、括号匹配的检验、行编辑程序、迷宫求解、表达式求解(操作数栈、运算符栈)、栈与递归的实现(Hanoi塔的问题)


队列

队列:只允许在表的一端进行插入,而在另一端删除元素。是一种 先进先出(first in first out,缩写为FIFO)的线性表。

在队列中,允许插入的一端叫做队尾(rear),允许删除的一端称为对头(front)。


串(字符串)

计算机上的非数值处理的对象基本上是字符串数据。在不同类型的应用中,所处理的字符串具有不同的特点,要有效地实现字符串的处理,就必须根据具体情况使用合适的存储结构。

值得一提的是,串值必须用一对单引号括起来,但单引号本身不属于串,它的作用只是为了避免与变量名或数的常量混淆而已。

串的逻辑结结构和线性表极为相似,区别仅在于字符集

定长顺序存储表示

堆分配存储表示:仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中动态分配而得的。在C语言中,存在一个称之为“堆”的自由存储区。

块链存储表示:链表方式存储串值

串的模式匹配算法:朴素模式匹配、KMP算法

原文地址:https://www.cnblogs.com/barbarian/p/8674905.html