线性表和链表的区别

存储类别顺序存储结构单链表
存储分配方式用一段连续的存储单元依次存储线性表的数据元素采用链式存储结构,用一组任意的存储单元存放线性表的元素
时间性能查找O(1)、插入和删除O(n)查找O(n)、插入和删除O(1)
空间性能需要预分配存储空间,大了浪费,小了上溢

不需要预先分配存储空间

总结:

1)当线性表需要频繁查找,较少插入和删除时,宜采用顺序存储结构。若需要频繁插入和删除,宜采用单链表。

2)当线性表的元素个数变化较大或不确定时,最好用单链表,这样不需要考虑存储空间大小问题。当事先知道线性表的大小长度,用顺序存储结构效率会高一些。

1.顺序存储

顺序表,使用数组实现,一组地址连续的存储单元,数组大小有两种方式指定,一是静态分配,二是动态扩展。

2.链式存储

链表的定义是递归的,它或者为空null,或指向另一个节点node的引用,这个节点含有下一个节点或者链表的引用。

与顺序存储相比,允许存储空间不连续,插入、删除元素不需要移动大量元素,只需要修改指针即可,但查找某个元素,只能从头遍历整个链表。

在Java中,使用嵌套类定义结点的抽象数据类型。

public class Node{
	//链表节点的嵌套类
	T item; //节点内容
	Node next; //后继节点
}

2.1 单链表

单链表分为带头结点和不带头结点两种,不管有无头结点,头指针都指向链表的第一个节点(有头结点指向头结点)。

头结点:数值域可不设任何信息,头结点的指针域指向链表的第一个元素。

带头节点的好处:

  (1)链表第一位置节点上的操作和其它位置上的操作一致;

  (2)无论链表是否为空,头指针都指向头结点(非空),空表和非空表处理一样。

  注:链表麻烦的地方是插入和删除时指针的修改,保证不断链,一般先断后链。

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值