算法:线性表的分类

线性表

为了很好的描述这个概念,先从一个例子开始吧,比如幼儿园的小朋友放学之后,都是手拉手排着队走出校园,这些小朋友从外表来看就像是一条链子,而线性表就和这个链子一样,这些小朋友就像是线性表里面的数据元素,从外面看一个接一个。比较正式的定义那就是:线性表:0个或者多个数据元素的有限序列

刚刚我提到的都是从表面来看都是一样的,说明在内部的实现方式是不一样的,下面就是线性表的两种存储结构:顺序存储结构和链式存储结构

顺序存储结构:用一段地址连续的存储单元依次存储线性表的数据元素。
链式存储结构:地址可以连续也可以不连续的存储单元存储数据元素

对于基于链式存储结构的链表。你可以这样理解,比如说你要找一个人,名字叫张三,你首先跑到A,发现没有,A告诉你B可能知道,你跑到了B。B说C可能知道,你跑到了C,张三果然在C那里,如果没有就这样一直不停的去找。一张图看一下
在这里插入图片描述
但是这只是基础,对线性表的描述,不想花费太多时间在这。下面用一张图表述吧。
在这里插入图片描述
下面在对这两种存储结构进行一个对比。
在这里插入图片描述

最典型的顺序存储结构就是数组

但是数组存在两个缺陷:

  • 编译器就要知道大小
  • 数组中的数据在计算机内存中是以相同距离间隔开的,这意味着要在数组中插入一个数据,需要移动该数组的其他数据。

为此我们引入了链式存储结构,也就是链表。

  • 链表可以分为:单向链表、双向链表、循环链表
  • 链表是节点的集合,节点中存储这数据并链接到其他的节点。通过这种方式,节点可以位于内存中的任何位置,每个节点都存储这其他节点的地址,因此数据很容易从一个节点到达另一个节点

链表的实现方式有很多,但最灵活的实现方式是使用指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值