赞
踩
什么是链表:
链表是数据在计算机中存储的一种方式,它的物理结构不连续,也就是说在计算机中存储时不是一段连续的内存空间;但它的逻辑结构是连续的,它由一个个节点组成,依靠引用把一个个节点连接起来,比较灵活。可以做到随用随取。
链表的组成
链表由数值域data和下一个节点的引用域next组成,next保存的是下一个节点的地址。
链表相对于顺序表的优缺点:
优点:
①:存储方式灵活,插入删除的时间复杂度为O(1),而顺序表最坏情况插入删除时间复杂度为O(n)
②:顺序表中数组的扩容需要申请新空间,释放旧空间,会有不小的消耗
③:顺序表中数组扩容一般呈二倍增长,不能做到随用随取,有一定的空间浪费。
缺点:
顺序表修改某个数据的时候可以直接依靠下标来进行修改,而链表不可以。
单链表:
①:不带头节点的单向非循环单链表(以下单链表都以此为例):
没有指定头节点,需要我们自己创建一个引用head来保存处于第一个节点的地址。最后一个节点的next域为null。
②:带头节点的单项非循环单链表:第一个节点永远都是头,不管插入删除都不能动头节点。最后一个节点的next域还是null
③:不带头节点的单项循环链表:不带头节点的单项非循环链表的基础上把最后一个节点的next域的null赋值为头节点的地址
④:带头节点的单项循环链表:带头节点的单项非循环链表的基础上把最后一个节点的null赋值为头节点之后一个节点的地址。
5.示例代码
class Nodee {//节点的所有特征 public int data; public Nodee next; public Nodee(int data) { this.data = data; } } public class Demo7 { public Nodee head;//用来保存单链表中第一个节点的地址。 public void Addfirst(int data) {//头插法 Nodee node = new Nodee(data); if (this.head == null) {//代表单链表里面没有任何数据 this.head = node;//把我们插入的这个节点来作为第一个节点,也就是头节点。 return;//不return的话,继续往下执行,此时head=node,node.next=head,也就是等于了自己。 } node.next = head;//此时单链表里面有节点,把原先头节点的地址赋值给我们插入的节点的next he
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。