数据结构与算法之线性结构

线性表

线性表是由同一类型的数据元素构成的线性结构,特点是:数据元素间呈一种线性关系。线性表是具有相同数据类型的n个数据元素的有限序列,通常记为:
(a1,a2,a3,······,a(i-1),ai,a(i+1),······,an)

线性表(linear List)的分类:数组、链表、栈、队列
在这里插入图片描述

线性表的顺序表示——数组:

没错我们熟知的数组就是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。由于数组一般不作插入、删除操作,也就是说,一旦建立了数组,则结构的数据元素个数和元素之间的关系就不再变动。

因此,采用顺序存储结构表示数组自然的事了。存储单元是一维的结构,而数组是多个维的结构,则用一组连续存储单元存放数组的数据元素就有个次序约定。

线性表的链式表示——链表:

线性表的链式存储结构的特点是用一组任意的存储单元储存线性表的数据元素(这组存储单元可连续也可不连续),因此为了表示每个元素与其后继元素的逻辑关系,对数据元素来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。

1、单链表:链表每个数据元素的结点只包含一个指针域。

2、 循环链表:特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。由此,从表任何一个结点触发均可找到表中其他结点:

是限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾有特殊含义,成为栈顶,表头端称为栈底。不含元素表称为空栈。

栈在我们的日常生活中也是很常见的,比如堆叠的碗总是先取后放进去的晚,这也能给我们带来很多的启示比如我们在编写计算器程序时将中缀表达式转化为后缀表达式,后缀表达式的求值就是栈的一个很好的应用,当表达式里出现括号时要注意其优先级最高,只有遇到右括号时左括号才会出栈。

队列

队列是一种先进先出(first in first out)的线性表。它只允许在表的一端进行插入,而在另一端删除元素。有时我们还会用他的升级版循环队列:在队列的顺序存储结构中,除了存储单元之外。还要附设两个指针front和rear分别指示队列头元素及队列尾元素的位置。

在循环队列中仅凭Q.front = Q.rear无法判断出队列空间是“空”还是“满”。可有两种处理方法:其一,是另设一个标志位来区别队列是“空”还是“满”;其二,是少用一个元素空间,约定以“队列头指针在队列尾指针的下一位置上”作为队列呈“满”状态的标志。

发布了32 篇原创文章 · 获赞 5 · 访问量 904

猜你喜欢

转载自blog.csdn.net/LebronGod/article/details/104418996