数据结构基础:线性表学习笔记
1、线性表定义
线性表是指n个元素的有限序列(n>=0),通常用(a1,a2,a3...,an),来表示。
2、线性表特点
1、存在唯一的一个首元素
2、存在唯一一个尾元素
3、除第首元素外,每个元素只有一个直接前驱。
4、除尾元素外,每个元素只有一个直接后继。
3、线性表的存储结构
3.1 线性表的顺序存储
定义:线性表的顺序存储是指用一组连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理存储位置上也相邻。这种存储方式无需占用额外的存储空间来存储。
优点:可以随机读取 表中的元素。按照序号检索元素比较快。
缺点:插入、删除元素都需要移动元素。
3.2 线性表的链式存储
3.2.1 线性表的概念
定义:是节点来存储数据元素,元素节点的地址可以连续,也可以不连续。因此节点之间的元素的存储必须有逻辑关系。
元素节点:包含数据域、指针域(存储该元素的直接前驱、直接后继的位置信息)
优点:插入和删除操作不需要移动元素。、
缺点:只能顺序的读取元素,不能随机读取。
3.2.2 线性链表的分类
单链表:最后一个节点指针域为null
循环链表:最后一个指针域为指向第一个节点。因此循环链表可以从任意节点开始遍历整个链表。
双向链表:每个节点包含两个指针,分别指明当前元素的直接前驱和直接后继的存储信息。可以从两个方向遍历链表中的元素。
3.3 线性表顺序存储和链式存储比较
性能方面 |
比较内容 |
顺序存储 |
链式存储 |
空间性能 |
存储密度 |
=1 更优 |
<1 |
存储容量 |
初始化确定 |
动态分配,更优 |
|
查询算法 |
O(n/2) |
O(n/2) |
|
读取算法 |
O(1) 更优 |
O([n+1]/2),范围1~n |
|
插入算法 |
O([n]/2),范围0~n |
O(1) 更优 |
|
删除算法 |
O([n-1]/2) |
O(1) 更优 |
IT技术分享社区
个人博客网站:https://programmerblog.xyz
文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识
数据结构基础:线性表学习笔记相关推荐
- 数据结构第二章线性表学习笔记
1. C++程序设计模板 (关于template的解释)[以下内容摘自百度] 函数声明格式 template <class(或typename) any(或任意符合规则的名称)> ...
- 数据结构基础--线性表
文章来源:http://www.cnblogs.com/V1haoge/p/8276472.html 手动实现的顺序线性表结构,实现了基本的方法,本地简单测试通过,主要用于理解顺序线性表的结构,还实现 ...
- python线性表和队列_[笔记]python数据结构之线性表:linkedlist链表,stack栈,queue队列...
python数据结构之线性表 python内置了很多高级数据结构,list,dict,tuple,string,set等,在使用的时候十分舒心.但是,如果从一个初学者的角度利用python学习数据结构 ...
- 数据结构和算法基础--线性表
数据结构和算法基础–线性表 数据结构 = 数据的逻辑结构+数据的存储结构+数据的运算 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-28ek7MfI-164242629 ...
- 数据结构之线性表----一文看懂顺序表、单链表、双链表、循环链表
线性表是数据结构中比较基础的内容,不过也是入门的所需要客服的第一个难关.因为从这里开始,就需要我们动手编程,这就对很多同学的动手能力提出了挑战.不过这些都是我们需要克服的阵痛,学习新的知识总是痛苦 ...
- step3 . day2 数据结构之线性表链表
今天继续学习数据结构的线性表部分,从基础的顺序表到链表,类比写了一些调用函数,完成了表的增删改查排序等问题. 尤其是链表的排序,费了很大的心思终于捋顺写出来了,小有成就感,而且代码一次通过率越来越高, ...
- 数据结构之线性表的基本C语言语法
一开始没做笔记,大家想看的话可以参考这里 [数据结构绪论] [数据结构(二)] [数据结构--算法和算法分析] [数据结构--渐进时间复杂度] [数据结构--初识线性表] [数据结构--线性表的顺序实 ...
- Java数据结构(1.1):数据结构入门+线性表、算法时间复杂度与空间复杂度、线性表、顺序表、单双链表实现、Java线性表、栈、队列、Java栈与队列。
数据结构与算法入门 问题1:为什么要学习数据结构 如果说学习语文的最终目的是写小说的话,那么能不能在识字.组词.造句后就直接写小说了,肯定是不行的, 中间还有一个必经的阶段:就是写作 ...
- AI Studio 飞桨 零基础入门深度学习笔记1-深度学习的定义
AI Studio 飞桨 零基础入门深度学习-笔记 人工智能.机器学习.深度学习的关系 机器学习 机器学习的实现 机器学习的方法论 案例:牛顿第二定律 确定模型参数 模型结构介绍 深度学习 神经网络的 ...
最新文章
- python tqdm_推荐一些实用的的 Python 库
- C语言学习之求一个3X3的整型矩阵对角线元素之和。
- mybitys 动态sql 注释_mybatis注解动态sql详解
- 【自用】 VS2017 部分快捷键
- 如何查看服务器并发请求连接数
- SilverLight学习笔记--Silverlight中WebService通讯
- (JAVA)hashcode
- C#学习日志三(流程控制语句)
- bzoj2463 [中山市选2009]谁能赢呢?
- 针对敲诈病毒(WanaCrypt0r2.0)的应对方案
- [Java] 蓝桥杯ADV-158 算法提高 新建Microsoft Word文档
- 模型评估方法【附python代码】(信息准则:赤池信息量准则AIC、贝叶斯信息准则BIC)
- vs为什么打了断点不断_2019年丹麦羽毛球公开赛焦点对阵:林丹VS塞帕拉内斯 石宇奇 VS 马克卡尔尤B...
- 《JavaSE-第十四章》之文件(一)
- 逆商之CORE和LEAD
- 【XSY3904】直线(分块)
- 求1!+2!+....+10!
- BRINSON理论 - 投资组合表现的决定因素
- 【Linux】linux进程--进程控制:进程创建、进程终止、进程等待、进程程序替换
- 从玩法、叙事、主题三个角度浅要谈谈《死亡搁浅》的好与坏
热门文章
- Inpainting图像修复halcon算子,持续更新
- KUKA profesafe
- 【图像处理】——创建一个新的图片
- JAVA项目怎么不是蓝色_解决IDEA创建maven项目时pom.xml没有变蓝的问题
- multi mysql_mysqld_multi 的使用方法
- vue定义global.js,挂载在vue原型上面使用
- 博客园自动添加版权说明,自动添加文章链接
- 56、servlet3.0-与SpringMVC整合分析
- Generator 函数的异步应用
- 20165301 预备作业二:学习基础和C语言基础调查