顺序存储和链式存储

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

数据结构

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

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

线性表

线性表是一种数据结构,是由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遍历

改:顺序查找更快

目录
相关文章
|
6月前
|
存储 算法 索引
线性表的顺序存储和链式存储
线性表的顺序存储和链式存储
52 0
|
6月前
|
存储 算法 索引
【二叉树】的顺序存储(堆的实现)
【二叉树】的顺序存储(堆的实现)
50 0
|
7月前
|
存储
线性表的链式存储结构
线性表的链式存储结构
|
8月前
|
存储
二叉树——链式存储
✅<1>主页:我的代码爱吃辣 📃<2>知识讲解:数据结构——二叉树 🔥<3>创作者:我的代码爱吃辣 ☂️<4>开发环境:Visual Studio 2022 💬<5>前言:上期讲了二叉树的顺序存储,今天来讲一下二叉树的链式存储。
|
10月前
|
存储
线性表的链式存储——链表
线性表的链式存储——链表
126 0
|
12月前
|
存储 人工智能 DataX
线性表的顺序存储实现
线性表的顺序存储实现
线性表的链式存储实现(带头结点)
线性表的链式存储实现(带头结点)
|
存储 C++
线性表的顺序存储——顺序表
线性表的顺序存储——顺序表
133 2
线性表的顺序存储——顺序表
|
存储 C++
C++实现线性表 - 02 单向链表
今天我们来动手实现一下链表结构,链表在我们后续的数据结构中用的十分频繁,可以说就是实现后续很多数据结构一个的基本工具,也是最容易的数据结构之一,我们先从最基础的单向链表讲起,小白刚开始学习肯定会被折磨的头疼,我也是这样的,但只要啃下这块硬骨头就已经前进一大步了!
127 0
C++实现线性表 - 02 单向链表
数据结构——线性表的链式存储结构1(单链表)
数据结构——线性表的链式存储结构1(单链表)
数据结构——线性表的链式存储结构1(单链表)