顺序存储和链式存储

简介: 顺序存储和链式存储

数据结构

数据结构是计算机存储、组织数据的方式(规则),或者说数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,比如自定义的一个类也可以称为一种数据结构自己定义的数据组合规则。我们不需要把数据结构想的太复杂,简单点理解,就是人定义的存储数据和表示数据之间关系的规则而已。

常用的数据结构:数组、栈、队列、链表、树、图、堆、散列表。

线性表

线性表是一种数据结构,是由n个具有相同特性的数据元素的有限序列,比如数组、ArrayList.Stack.Queue、链表等等。

顺序存储和链式存储是数据结构中两种存储结构,顺序存储结构是存储结构类型中的一种,该结构是把逻辑上相邻的结点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。链式存储结构,又叫链接存储结构。在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。

顺序存储

数组、Stack、Queue.List、ArrayList等都属于顺序存储。

只是数组、stack、Queue的组织规则不同而已。顺序存储的原理是用一组地址连续的存储单元依次存储线性表的各个数据元素。

链式存储

单向链表、双向链表、循环链表等都属于链式存储。

用一组任意的存储单元存储线性表中的各个数据元素。

两种存储结构各有长短,选择哪一种由实际问题中的主要因素决定。通常“较稳定”的线性表,即主要操作是查找操作的线性表,适于选择顺序存储;而频繁做插入删除运算的(即动态性比较强)的线性表适宜选择链式存储。

实现一个简单的单向链表

class LinkedNode<T>
{
    public T value;
    public LinkedNode<T> nextNode;
    public LinkedNode(T _value)
    {
        value = _value;
    }
}
LinkedNode<int> head = new LinkedNode<int>(1);
LinkedNode<int> node = new LinkedNode<int>(2);
head.nextNode = node;
node.nextNode = new LinkedNode<int>(4);

需要注意的是,遍历链表要用while从头结点一层一层找。

顺序存储和链式存储的优缺点:

增:链式纯粹不用移动位置

删:链式存储不用移动位置

查:顺序存储不用while遍历

改:顺序查找更快

目录
相关文章
|
存储 算法 索引
【二叉树】的顺序存储(堆的实现)
【二叉树】的顺序存储(堆的实现)
86 0
|
2月前
|
存储 Java
java数据结构,线性表链式存储(单链表)的实现
文章讲解了单链表的基本概念和Java实现,包括头指针、尾节点和节点结构。提供了实现代码,包括数据结构、接口定义和具体实现类。通过测试代码演示了单链表的基本操作,如添加、删除、更新和查找元素,并总结了操作的时间复杂度。
java数据结构,线性表链式存储(单链表)的实现
|
1月前
|
存储
顺序存储之顺序表
这篇文章介绍了顺序表的创建、操作和顺序存储的实现,包括定义数据类型、构建顺序表结构、顺序表的创建、扩容、数据插入、删除、遍历和销毁。
29 0
|
2月前
|
存储 Java
java数据结构,线性表顺序存储(数组)的实现
文章介绍了Java中线性表顺序存储(数组)的实现。线性表是数据结构的一种,它使用数组来实现。文章详细描述了线性表的基本操作,如增加、查找、删除、修改元素,以及其他操作如遍历、清空、求长度等。同时,提供了完整的Java代码实现,包括MyList接口和MyLinearList实现类。通过main函数的测试代码,展示了如何使用这些方法操作线性表。
|
6月前
|
存储 算法 人工智能
|
存储
线性表的链式存储结构
线性表的链式存储结构
二叉树——链式存储
✅<1>主页:我的代码爱吃辣 📃<2>知识讲解:数据结构——二叉树 🔥<3>创作者:我的代码爱吃辣 ☂️<4>开发环境:Visual Studio 2022 💬<5>前言:上期讲了二叉树的顺序存储,今天来讲一下二叉树的链式存储。
|
存储 人工智能 DataX
线性表的顺序存储实现
线性表的顺序存储实现
|
存储
线性表的链式存储——链表
线性表的链式存储——链表
203 0
|
存储 C++
线性表的顺序存储——顺序表
线性表的顺序存储——顺序表
172 2
线性表的顺序存储——顺序表