数据结构之线性表(链表)
来源:互联网 发布:叙利亚失败的国家 知乎 编辑:程序博客网 时间:2024/05/21 06:00
线性表是n个数据元素的有限序列。
一、线性表的顺序存储结构
用一段地址连续的存储单元依次存放线性表中的数据元素,实现方式是一维数组的方式。
顺序表的插入操作:先将被插入元素后面的所有元素向后移动一个单位,再将要插入元素插入位置(删除操作同理,先向前移动之前的元素)
优点:1.无需为表示表中元素之间的逻辑关系而增加额外的存储空间
2.可以快速存储和读取表中任意位置的元素,时间复杂度为O(1)
缺点:1.插入和删除操作需要移动大量元素,时间复杂度为O(n)
2.线性表长度变化较大时难以确定存储空间的容量
二、线性表的链式存储结构(链表)
对于链式存储结构来说,那一组存储单元的地址可以是连续的,也可以是不连续的。
对于链表中的一个数据元素来说,分为两个区域:一个是数据域,用于存储数据元素信息;一个是指针域,存储后继元素的地址。这两部分合起来称作结点。
链表有四种结构:单链表、环形链表、双向链表、静态链表(针对没有指针的高级语言)
单链表的读取:从头结点开始遍历链表,用一个指针不断指向下一个元素直到下一个为NULL,比较要读取的结点值。时间复杂度为O(n)
单链表插入新结点:先从头结点开始遍历找到插入的位置插入,然后将插入结点的前一个结点指向新结点,新结点指向下一个结点即可。(删除结点同理)时间复杂度为O(1)
环形链表:将单链表中末尾结点的指针由指向NULL变为指向头结点,就使得整个链表变为一个环形结构
双向链表:在单链表的每个结点中,再设置一个指向其前驱结点的指针域,双向链表也可以是环形结构
例:链表的C++实现
0 0
- 数据结构之线性表(链表)
- 数据结构之线性表 -- 链表(总括)
- 数据结构之线性表----链表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- 数据结构之线性表
- Android开发中EditText当被选中后怎么修改下划线和hint值得颜色
- Callable、Future和CompletionService
- Docker 问题积累
- poj1804
- 宏定义头文件
- 数据结构之线性表(链表)
- Lock、ReentrantLock和AbstractQueuedSynchronizer的源码要点分析整理
- @media媒体查询
- HTK实现孤立词语音识别
- myEclipse2014集成MyBatis插件自动生成代码
- Linux下动态库的创建与链接
- AbstractQueuedSynchronizer在工具类ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier中的应用
- SM2国密算法证书解析
- VS2012 有效注册密钥