数据结构-线性表 (栈,队列,串)

定义:n个元素的有限序列 ,记为(a1,a2,a3,...,an)

特点:存在唯一表头表尾。除了表头,每个元素只有一个直接前驱。除了表尾,每个元素只有一个直接后驱。

存储结构

1 顺序存储 

地址连续的存储单元,依次存储表中数据元素。使得逻辑相邻的元素,物理位置上也相邻

优点: 随机存取表中元素。  loc元素位置 L元素所占空间   loc(ai)=loc(a1)+(i-1)*L    

缺点:插入删除需要移动大量元素。

2 链式存储

结点存储元素,结点空间可连续,也可不连续,因此需存储元素的连接的逻辑关系。

结点空间需要时再申请。

优点 插入 删除操作方便。

扫描二维码关注公众号,回复: 11474343 查看本文章

缺点 增加了存储空间开销,不能随机访问任一点。

(1)双向链表:每个结点包含两个指针,指明直接前驱和直接后继元素,可在两个方向上遍历链表。

(2)循环链表:表尾结点的指针指向表中的第一个结点 ,可在任何位置上开始遍历整个链表。

(3)静态链表:借助数组来描述线性表的链式存储结构。

.线性表的插入和删除运算
(1)基于顺序存储结构的运算
插入元素前要移动元素以挪出空的存储单元,然后再插入元素:
删除元素时同样需要移动元素,以填充被删除出来的存储单元。

(2)基于链式存储结构的运算

在链式存储结构下进行插入和删除,其实质是对相关指针的修改。

栈:先进后出的线性表 

进行插入和删除的是栈顶另一端是栈底。

顺序存储:用地址连续的存储单元,存储从栈顶到栈底的元素,设指针top指示栈顶位置。

链式存储:链栈,链表的头指针是栈顶指针,插入删除是栈顶进行,无头结点。

队列:先进先出(FIFO)的线性表

只允许表的一端插入(队尾,rear),另一端删除(队头,front)。

 

 顺序存储:用地址连续的存储单元,存储元素,设指针队头指针和队尾指针。

链式存储:链队列,设头结点,头指针指向头结点。判空条件:头指针尾指针的值相同,均指向头结点。

串:由字符指向的有限序列,取值范围受限的线性表。 

s为串名,a1,a2...ans1串值,记为s=‘a1,a2,...,an’.

串的几个基本概念

●空串:长度为零的串,空串不包含任何字符。

●空格串:由一个或多个空格组成的串。

●子串:由串中任意长度的连续字符构成的序列。

含有子串的串称为主串。

子串在主串中的位置指子串首次出现时,该子串的第一个字符在主串中的位置。

空串是任意串的子串。

V主串: abcbcc
V子串:cb

串相等:指两个串长度相等且对应位置上的字符也相同。

●串比较:两个串比较大小时以字符的ASCII码值作为依据。

比较操作从两个串的第一个字符开始进行,字符的ASCII码值大者所在的串为大,

若其中一个串先结束,则以串较长者为大。

cfdeg
cfed

串的存储结构
每个字符串的最后要增加个串结束标志\0。
顺序存储 用一组地址连续的存储单元来存储串值的字符序列。
链式存储 当用链表存储串中的字符时,每个结点中可以存储一个字符,也可以存储多个字符,要考虑存储密度问题。


猜你喜欢

转载自www.cnblogs.com/young-children/p/13404896.html