[数据结构与算法] 3,线性表

原创 2016年08月30日 19:40:59

1 线性表的定义

零个或多个数据元素的有限序列。序列指数据元素之间是有顺序的,若有多个元素,那么第一个元素无前驱,最后一个元素无后继。其它每个元素都有前驱后继


2 线性表的抽象数据类型

3 线性表的顺序存储结构

定义:用一段地址连续的存储单元依次存储线性表中的数据元素。(C语言中的一维数组)

顺序存储结构线性表的结构代码

三个重要的属性:

1) 存储空间的存储位置:数组data的存储位置

2)线性表的最大存储容量:MAXSIZE

3)线性表的当前长度:length

4 顺序存储结构下线性表的操作

1)取出操作 时间复杂度:O(1)


2)插入操作 时间复杂度:最坏O(n),平均时间复杂度也是一样


3) 删除操作 时间复杂度O(n),平均也是

5 线性顺序存储结构的优缺点

6 线性表的链式存储结构

头节点:为了操作方便,在第一个节点前增加一个头节点,数据域可以不存储任何信息,也可以放一些公共信息,如下图:

头节点跟头指针的区别:


C语言结构指针描述单链表的:


7 单链表的操作

1)读取操作: 时间复杂度:O(n)


2)插入操作:代码顺序不可相反,可以想想为什么


3)删除操作:



8,单链表结构跟顺序存储结构优缺点

如果线性表需要频繁查找,很少进行插入删除操作,那么适合用顺序存储结构,如果需要频繁插入删除操作,那么适合用链式存储结构,单链表。

比如在游戏开发中,用户注册的信息,除了用户注册外,其余时候我们都是读取,所以应该考虑顺序存储结构。

比如玩家的装备总是在变化,可能增加或者删除,那么适合用单链表。实际情况往往复杂很多。


9,循环链表

将单链表的终端节点的NULL指针改为指向头节点或者开始节点,这就使得整个单链表形成一个环,这种头尾相连的链表称为循环链表(circular linked list)

那么,循环链表判断循环结束的标志就是p->next等于头节点或者开始节点,则循环结束。

10,双向链表(double linked list)

双向链表就是多设置了一个指向前驱节点的指针。

双向链表的插入操作:

删除操作:


11,总结




























版权声明:本文为博主原创文章,未经博主允许不得转载。

线性表3 – 数据结构和算法08

线性表3   让编程改变世界 Change the world by program   线性表的顺序存储结构   我们可以想象,线性表有两种物理存储结构:顺序存储结构和链式存储结构。...

数据结构与算法学习笔记02_3(线性表)

数据结构与算法学习笔记02_3(线性表)   单链表的整表创建 单链表整表创建的算法思路如下: 创建单链表的过程是一个动态生成链表的过程,从“空表”的初始状态起,依次建立各元素结点并逐个插入链...

数据结构与算法 线性表

  • 2015年03月19日 22:59
  • 2.37MB
  • 下载

数据结构与算法3:线性结构与线性表-链表

链表

数据结构与算法:线性表的题库

  • 2008年04月30日 20:21
  • 715KB
  • 下载

[Coursera]数据结构基础_Week2_线性表_Q3

Coursera课程作业
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[数据结构与算法] 3,线性表
举报原因:
原因补充:

(最多只允许输入30个字)