2018-03-17 线性表

线性表的定义

注:线性表是一个序列,是有顺序的,有先来后到。

数据结构包含逻辑结构,物理结构,以及简单操作。

而算法就是各种简单操作的一系列步骤,和基本的语句构成的集合。

线性表根据物理结构分为顺序表和链表,而这两种表结构的各个基本操作的复杂度不同。

基本操作包括:

使用一个线性表:初始化,置空,取长度,按位查找,按值查找

修改一个链表:删除,插入,修改

链表算法:排序

注意上面这些操作方法,输入量中包含这个(List,*)以及其他参量,是一种每个List都可以用的统一的方法。

顺序表

顺序表

在顺序表中三个属性:初始位置,存储长度maxsize,线性表的当前长度length 

顺序表可以简单的看成是数组,注意第i个元素在数组中下标为【i-1】

复杂度分析:

存储复杂度、访问复杂度:O(1)

插入复杂度、删除复杂度:O(n)

顺序表的特点

顺序表:适用于存储和访问

链式表 

链式表定义

链表分为单链表和双链表

单链表结构

单链表:只含有一个指针next,头指针指向头结点,头结点不是必须的,头指针是必须的,因为要找到第一个元素,为了保证各种插入,删除的一致性,在第一个元素前,需要添加一个头结点,头结点的数据域中一版不存放数据,或者可以存放链表长度。如不加特殊说明,链表都默认带头结点。链表中没有链表的长度这一项

注意:在学习链表的时候,不要有加减的想法,要根据指针来思考。

单链表的操作

查找操作查找是一步一步取指针,取指针的的次数由元素的位置控制,比如第3个元素,那么就取3次指针,则取到第三个元素的值。这里面有一个头结点的好处就出来了,虽然第三个元素是第四个节点,但是第三个节点的指针是指向第三个元素。 复杂度为O(n)

单链表的特点

插入操作与删除操作:复杂度为O(n)

图截:插入删除

顺序表和链表对比:顺序表每次插入或删除的复杂度都是O(n),而链表只有第一次为O(n),后续均为O(1),只需要定位一次。所以,链表适合频繁插入的操作。

你可能感兴趣的:(2018-03-17 线性表)