线性表 链试线性表 单向 双向

a-b-c-d-e-f

1.他们的数据类型一致
2.除了第一个元素a,每一个元素有且只有一个前驱元素。
3.除了最后一个元素f,每一个元素都有且只有一个的直接后继
4.元素之间关系是一对一。

所以从 a 到 f 就是一条线 就是线性表

线性表有哪些方法:

  • InitList(*L) : 初始化操作,建立一个空的线性表
  • ListEmpty(L): 判断线性表是否为空,若线性表为空 返回true,否则返回true
  • ClearList(*L):线性表清空
  • GetElem(L,i,*e):讲线性表L中的第i个位置的元素返回给e
  • LocateElem(L,e) :在线性表L中查找 给定值e 相等的 元素,如果查找成功,返回该元素在表中的序列号,否则失败返回0
  • ListInsert(*L,i,e):在线性表中第i个位置插入新的元素e
  • ListDelete(*L,i,e):删除线性表中的第i个元素,并且用e 返回其值
  • listLength(L):返回线性表的长度
线性表顺序存储:

把一定内存空间内,存储相同的数据类型依次放在这块 内存空间

顺序线性表结构代码
<pre>

define MAXSIZE 20

typedef int ElemType
typedef struct
{
ElemType data [MAXSIZE];
int length;
} Sqlist ;
</pre>

#######链试线性表(单向)

a-b-c-d-e-f

1.他们的数据类型一致
2.除了第一个元素a,每一个元素有且只有一个前驱元素。
3.除了最后一个元素f,每一个元素都有且只有一个的直接后继
4.元素之间关系是一对一。
5.除了最后一个元素 f 都有后继元素的地址,最后一个为null

所以从 a 到 f 就是一条链试线性表

链试线性表结构代码
<pre>
typedef struct Node {
ElemType data;
struct Node *next;
} Node, *LinkList;
</pre>

链试线性表的比顺序表的 优点(单向)

删除 和 添加 不需要大规模移动,时间复杂度为O(1)
而顺序线性的O(n)

缺点

多占 一空间

同理 双向链表

<pre>
typedef struct Node {
ElemType data;
struct Node *next, *prev;
}Node, *LinkList;
</pre>

链试线性表的比顺序表的 优点 (双向)

删除 和 添加 不需要大规模移动,时间复杂度为O(1)
并且可以查找 上前驱元素

缺点

多占 俩空间

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.线性表的定义 线性表:零个或多个数据元素的有限序列序列:也就是说元素之间是有顺序的,若元素存在多个,则第一个元...
    e40c669177be阅读 2,088评论 6 15
  • 3.2 线性表的定义 线性表,从名字上你就能感觉到,是具有像线一样的性质的表。 零个或多个数据元素的有限序列。 这...
    努力生活的西鱼阅读 945评论 0 1
  • 本文内容取自于小甲鱼的数据结构与算法。http://www.jianshu.com/p/230e6fde9c75 ...
    阿阿阿阿毛阅读 2,927评论 0 7
  • 前言 上一篇《数据结构和算法之时间复杂度和空间复杂度》中介绍了时间复杂度的概念和常见的时间复杂度,并分别举例子进行...
    VV木公子阅读 4,370评论 2 26
  • 在上一篇文章中我们简单说了数据结构的概念和数据结构与算法的一些关系,这一篇文章的内容是关于线性表的东西,主要有线性...
    硅谷小虾米阅读 1,298评论 1 3