线性结构(顺序存储和链式存储)和非线性结构的特点及区别
1. 线性结构
特点:除第一个元素只有一个“后继”和最后一个元素只有一个“前驱”,其它每个元素只有一个“前驱”元素和一个“后继”元素。
常见的线性结构有: 数组、链表、栈以及队列。注意:栈和队列本身不是一种数据结构,可通过数组或链表实现。
1.1 线性结构又分为顺序存储和链式存储
线性结构又分为顺序存储和链式存储,顺序存储:各个元素存储的地址空间连续,逻辑相邻的元素在物理内存中也相邻,如数组;
链式存储:各个元素存储在任意的地址空间,逻辑相邻的元素在物理内存中没有联系,如链表。
1.2 顺序存储和链式存储的区别
1.2.1 顺序存储
优点:① 因为各个元素是连续储存,而且当元素类型一致时占用空间大小一致,所以可以直接通过首元素地址计算
某个元素的内存地址,从而访问特定元素效率很高
② 对于有序数组,还可以通过二分查找提高元素查找的速度
缺点:① 由于顺序存储的特点,所以在删除或插入元素后需要移动其它元素使得整体的存储空间依然是连续的,
所以删除、插入元素效率低,如下图。
② 由于元素存储空间连续,所以当有大数据时,较难分配一块连续的大内存空间。
1.2.2 链式存储
优点:① 由于链式存储的特点,删除或插入节点很方便,不需要移动其它元素,改变元素“连接”关系即可,
所以删除、插入元素效率高,如下图。
缺点:① 因为存储的任意性,只能通过前一个元素访问下一个元素,每一次访问元素都从头节点开始遍历,
所以访问特定元素或查找元素效率低。
2. 非线性结构
特点:每个元素可以和多个元素“连接”。
常见的非线性结构:二维数组、树和图。
线性结构(顺序存储和链式存储)和非线性结构的特点及区别相关推荐
- 二叉树的存储结构顺序存储和链式存储
顺序存储 实现:将一棵二叉树按照当做一棵满二叉树进行编号(从上到下,从左到右),编号作为数组的下标,一次存放到二叉树的数据元素. 当一个二叉树不是完全二叉树,那么总会有一些位置没有元素,那么就将这些位 ...
- 数据结构与算法(6-2)二叉树的存储结构(顺序存储、链式存储)
目录 一.二叉树的顺序存储 存储方式 总代码 二.二叉树的链式存储(二叉链表) 1.存储结构 2.创建二叉树 总代码 一.二叉树的顺序存储 存储方式 //树的顺序存储 typedef struct { ...
- 数据结构之顺序存储与链式存储
数据结构之顺序存储与链式存储 定义 特点 前驱和后继 存储结构 顺序存储结构 定义 特点 优缺点 基本操作 链式存储结构 1.单链表 节点 基本操作 2.静态链表 3.双向链表 4.循环链表 顺序存储 ...
- 栈的存储——顺序存储与链式存储
文章目录 栈的存储 顺序存储 定义 代码实现 栈顶指针与栈中元素在内存中的存储 初始化栈及其代码 判断栈空及其代码 进栈操作及其代码 出栈操作及其代码 读取栈顶元素操作及其代码 顺序栈的缺点 共享栈 ...
- 线性表之顺序存储和链式存储结构
线性表:由零个或多个数据元素组成的有限序列 线性表有两种物理存储结构:顺序存储结构和链式存储结构 一.顺序存储结构 顺序存储结构是存储结构类型中的一种,该结构是把逻辑上相邻的结点存储在物理位置上相邻的 ...
- 数据结构与算法:一、线性表的顺序存储结构SeqList和链式存储结构LinkList
实现了线性表的链式存储结构和线性存储结构,能进行插入元素O(n),删除元素O(n),查找元素O(n)和返回线性表长度O(1)的操作.其中链式存储结构使用了C++11的智能指针进行内存管理. 要点:链式 ...
- 什么是线性表?线性表的特点,线性表的顺序存储和链式存储
线性表的表示 线性表的特点 ai的数据类型相同 位置序列从1开始 除去表头和表位,所有元素有且仅有唯一的直接前驱和后继 线性表的存储结构 顺序存储 可以随机的读取数据,读取方法 loc(a1)是基地址 ...
- 数据结构与算法2:线性表的顺序存储与链式存储
文章目录 线性表 定义 线性表的抽象数据类型(Abstract Data Type) 线性表的顺序存储结构 线性表的链式存储结构 单链表(single linked list) 静态链表 (stati ...
- 【数据结构笔记06】队列及其顺序存储、链式存储
本次笔记内容: 2.3.1 队列及顺序存储实现 2.3.2 队列的链式存储实现 文章目录 什么是队列 队列的顺序存储实现 循环队列 队列的链式存储实现 什么是队列 队列(Queue):具有一定操作约束 ...
最新文章
- WebStorm设置Ctrl+0恢复默认字体大小,设置全局字号大小
- SQL Server 2008 :安装
- iOS 代码规范总结
- Java对象排序、中文排序、SortedSet排序使用和源码讲解
- 计算2个时间之间经过多少Ticks
- React路由 + 绝对路径引用
- Linux下常用文本处理命令
- 数据结构实验之查找二:平衡二叉树
- python微信聊天机器人源码_8.【代码】微信聊天机器人(API的应用) - Python网络爬虫实战...
- [语言]Webassembly
- [三思笔记]一步一步学DataGuard.zip
- cad刷新快捷键_实用的CAD技巧
- 牛客网——Java刷题篇
- android viewpager实现画廊效果,ViewPager实现2D、3D画廊效果
- @uncheck_jQuery Check / Uncheck复选框
- Exception evaluating SpringEL expression: ***错误的一个解决办法
- addon游戏_SnowMobile Addon
- 手机变速齿轮_手机app变速齿轮
- 实现PPT演示的"非全屏播放"效果
- Sandboxie沙盘,代码开源可下载!