数据结构之顺序表(数组)和链表

 我来答
黑科技1718
2022-05-30 · TA获得超过5884个赞
知道小有建树答主
回答量:433
采纳率:97%
帮助的人:82.3万
展开全部

1、顺序表(数组)
顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组 地址连续的存储单元 依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。

数组在内存中是连续的存储的,所以索引速度很快( 根据 Loc(ai)=Loc(a1)+(i-1)w,(1<=i<=n) ,其中Loc(a1) 是基地址既第一个元素地址,i是索引数,w是存储单元,每个元素的存储单元都是相同的,所以只要知道了基地址和存储单元,就能查询到任意索引的值;例如 索引为4,查第4个值,假如w=1, Loc(4)=Loc(1)+(4-1)1 ,既首个地址加上索引减一再乘以存储单元就找到索引的地址了,从而直接访问到该元素的值,时间复杂度O(1),所以比较快),而且赋值与修改元素也很简单。可以利用地址访问元素,时间复杂度为O(1);可以用二分法查找元素、效率高。
但是,在对顺序表进行插入和删除时,需要通过移动数据元素来实现(比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序,C#中如ArrayList ,List 等),比较影响效率。

2、链表
2.1、 单链表
链表中的数据是以节点来表示的,每个节点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个节点的地址数据。

个人理解:链表实际上是把一些具有相同类型的元素(节点)通过其存储的地址信息连接起来。例如:某个(节点)元素中除了存储数据信息外,还保存了另外一个同种类型元素的引用地址A,在访问该引用地址A时,就会访问到A的内容,也就是下个节点的内容,同理,A也存储了另外的同种类型元素的引用地址B,以此类推,形成一个链表。
大白话可以说是有一个普通平常的类Node,由于该类有个属性next也是Node引用类型的,既该属性next存的是Node类型的引用地址,所以该类在调用next的时候,就会访问到next存放的地址所指向内容,也就是下一个节点的内容。

b、然后建立一个链表节点类Node<T>,使用泛型

然后由链表类LinkList<T> 实现ILstDS<T>接口,下面只写了Add方法

2.2、 双向链表

2.3、 循环链表

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式