揭开线性表的面纱(概述)

前言:

算法的描述有时候并不是真正的代码,放到机器上就可以运行,有时候是伪代码,它描述的是一种思想,一种解决问题的思路和方法。

 
2.1 线性表的概念

线性表是相同类型的数据元素的有限序列,数据元素之间具有顺序关系。(比较好理解)

2.1.1 线性表的抽象数据类型

线性表的数据元素和线性表的基本操作

2.1.2 线性表的顺序存储结构

线性表有两种存储结构:顺序存储结构和链式存储结构。用顺序存储结构实现的线性表称为顺序表,用链式存储结构实现的线性表称为链表。

最经典的就是用顺序表求解约瑟夫环问题。

2.1.3 线性表的链式存储结构

线性表的链式存储结构是把线性表的数据元素存放在结点中。结点由数据元素域和一个或若干个指针域组成,指针是用来指向其他结点地址的。在JAVA中使用“自引用的类”表示链式结构。

2.2 线性链表

2.2.1 单向链表

在线性链表中,如果每个结点只有一个链,则称为单向链表。

2.2.2 单向循环链表

单向链表中,将最后一个结点的链设置为指向链表的第一个结点,则该链表成为环状,称为单向循环链表。

2.2.3 双向链表

在单向链表中,每个结点只有一个链用于指向后继结点,而没有链记载前驱结点的信息。此时若要查找前驱结点,必须从链表的头指针开始重新沿着链表方向逐个检测,这样操作很不方便。因此,如果经常需要进行既向前又向后操作,采用双向链表。

双向链表的每个结点除了成员变量data之外,还有两个成员变量链:一个指向前驱结点,一个指向后继结点。

 

2.3 串

串可以看成是每个结点仅由一个字符组成的线性表。串也称为字符串。串也有顺序存储和链式存储两种方式。(对于串的学习可以参照前面的线性表,很多算法题中也涉及到了对于串的处理。)

 

带头结点的单链表和不带头结点的单链表的区别是什么?

主要体现在结构上和算法操作上。

结构上,带头结点的单链表不管链表是否为空,均含有一个头结点,而不带头结点的单链表不含头结点。

操作上,带头结点的单链表的初始化为申请一个头结点,且在任何结点位置进行的操作算法一致;而不带头结点的单链表让头指针为空,同时其他操作要特别注意空表和第一个结点的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值