链式结构

链式结构是一种数据结构,它使用对象引用变量来创建对象间的链接。链式结构是基于数组的集合实现的主要替代方案。

举例:我们来创建一个Person类,类内部除了含有普通的属性外,还包含着一个指向另一个Person对象的引用变量

public class Person(){

  private String name;

  private String address;

  private Person next;        //指向另一个Person对象的引用变量

  //省略属性的get,set方法

}

以上的Person类就是一个链式结构,又称自引用(self-referential)

链表就是链式结构的一种,与大小固定的数组不同,如果不考虑计算机本身的内存限制,链表容量是没有上限的。

由于链表的大小可以按需伸缩以容纳要存储的元素个数,因此链表是一种动态结构

&&&&由于以上这个原因,导致由链表实现的集合比数组实现的集合在增,删方面,性能更高。

1.访问元素

相应的链表的访问元素方面就不及数组了,对于链表来说,访问链表中元素的唯一方式就是:从第一个元素开始,顺着该链表往下

可想而知如果集合很大,又要寻找最后一个元素,性能就会很低,如检索存储了Person类的链表的第四个元素,我们只能:

Person current = first;

for(int i = 0; i < 3; i++){

  current = current.next;

}

而数组是基于索引的检索

2.插入元素

结点可以被插入到链表的任何位置,链表的前端,链表的内部结构之间,链表的末端。

在链表前端插入结点,需要重新设置指向整个链表的引用。首先,新增结点的next引用被设置为指定链表的当前首节点,接着,指向链表前端的引用重新设置为指向这个

新增加的结点。

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值