线性表

来源:互联网 发布:淘宝返现要支付宝账号 编辑:程序博客网 时间:2024/05/16 23:49

-线性结构的特点:在数据元素的非空有限集中

  1. 存在唯一的一个被称作’第一个’的数据元素;
  2. 存在唯一的一个被称作’最后一个’的数据元素;
  3. 除第一个外,集合中的每一个数据元素均只有一个前驱;
  4. 除最后一个外,集合中的每一个数据元素均只有一个后继;

线性表的顺序存储

-线性表的顺序表示:
-指用一组地址连续的存储单元一次存储线性表的数据元素


这里写图片描述

注意:
l代表每一个数据元素所需占的存储单元

-顺序存储线性表的插入和删除思想:

这里写图片描述


-插入说明:
    一般情况下,在第i(1<=i<=n)个元素之前插入一个元素时,需将第n至第i(共n-i+1)个元素向后移动一个位置。

-删除说明:
    一般情况下,删除第i(1<=i<=n)个元素时,需将从第i+1至第n(共n-i)个元素向前移动一个位置。

线性表的链式存储

-线性链表的链式存储结构又称做线性链表或单链表
-特点:
        用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)

例如:
线性表为{ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG},则改线性表的链式存储结构为:
这里写图片描述


该线性表的逻辑状态为:
这里写图片描述


-每一个结点都是由数据域(data)和链域(next)组成。
例如:
对于ai结点:
                p–>data = ai
                p–>next–>data = ai+1

-线性链表的插入和删除思想:
-插入:
这里写图片描述

执行操作:
                s–>next = p–>next,
                p–>next = s;

-线性链表的删除:
这里写图片描述

执行操作:
                p–>next = p–>next–>next;

-双向链表

这里写图片描述

执行删除操作思想:

        p-->prior-->next = p-->next        p-->next-->prior = p-->prior

执行插入操作思想:

设s为要插入的数据,则s-->data = e;s-->prior = p-->prior;p-->prior-->next = s;s--next = p;p-->prior = s;

优缺点比较:

顺序存储方式:——适用于需要大量查询的场景
             代表例子:ArrayList
             优点:查询速度快,对于随机访问get和set效率高
             缺点:插入和删除比较麻烦

链式存储方式:——适用于大量的插入删除操作场景
             代表例子:LinkedList
             优点:插入和删除快,对于随机add和remove效率高
             缺点:查找比较麻烦

1 0
原创粉丝点击