数据结构与算法《线性表》

开发工具与关键技术:

作者:木有窝的鸟~小通

撰写时间:2020年5月15日

 

线性表:

1、线性表是复合数据类型,这种类型的线性表称为复合线性表。

2、而线性表的主要特征如下:

(1).在非空的线性表,有且仅有一个开始结点a1,它内有直接前趋,而仅有一个直接后继a2.

(2).有且仅有一个终端结点an,它没有直接后继,而仅有一个直接前趋an-1;

(3).其余的内部结点ai(2≦i≧n-1)都有且仅有一个直接前趋ai-1和一个直接后继ai+1。

3、线性表的基本运算:

求表长——求线性表中元素个数

遍历——从左到右(或从右到左)扫描(或读取)表中元素

按编号查找——找出表中第i个元素

按特征查找——按某个特定值查找线性表

插入——在第i个位置上(即原第i个元素前)插入一个新元素

删除——删除原表中的第i个元素

排序——按元素某特征值的递增(或递减)排序,重排表中各元素

4、线性表有两种存储方式

一种顺序的形式

一种链序的形式

5、顺序表

顺序表是很守规矩的,每个元素都前后有序、整整齐齐地站在一起。

顺序表的基本特点是:元素按顺序存放地址连接。

1.空间连续;
2.支持随机访问;
3.在中间或前面部分的插入删除时间复杂度为O(n),增容的代价比较大;
4.顺序表的优点:更适合频繁访问第n个元素的场景;
(1)根据下标随机访问时间复杂度为O(1);
(2)不会造成内存碎片化;
(3)缓存更优化;
(4)代码简单;

6、链表

1、定义:链表不是地址连续的空间,他的插入和删除不需要移动元素,它看到内存有空余地址就可以毫无顾忌地挤进去,所以我们叫它“调皮的链表”。(链表是一种物理存储单元上非连续、非顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

2、线性表的链式存储表示的特点:是用一组任意的存储单元存储线性表数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素 与其直接后继数据元素 之间的逻辑关系,对数据元素 来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。

3、单链表的结构

单链表中构成链表的结点只有一个指向直接后继结点的指针域。其结构特点:逻辑上相邻的数据元素在物理上不一定相邻。

4、实现单链表的插入和删除操作:

(1)单链表插入

·找到位置P(ai-1

·生成新结点x,数据域赋值

·新结点指针域指向ai(ai的地址存放在ai-1的指针域)

·ai-1 的指针域指向新结点x

插入前:

插入后:

(2)删除单链表结点

·找到要删除的结点前一个结点x(原因是删除结点的位置在前一个结点的指针域)

·把xànext指向ai的下一个结点(把ai从链上摘除)

·释放ai空间

删除前:

删除后:

(3)删除单链表头元素

·保存头元素的指针域(即头元素的后继节点的首地址)

·头结点指针域指向头元素的后继节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值