当前位置:   article > 正文

单链表的增、删、改、查_链表不可更改吗

链表不可更改吗

单链表的增、删、改、查

  1. 什么是链表:
    链表是数据在计算机中存储的一种方式,它的物理结构不连续,也就是说在计算机中存储时不是一段连续的内存空间;但它的逻辑结构是连续的,它由一个个节点组成,依靠引用把一个个节点连接起来,比较灵活。可以做到随用随取。

  2. 链表的组成
    链表由数值域data和下一个节点的引用域next组成,next保存的是下一个节点的地址。

  3. 链表相对于顺序表的优缺点:
    优点:
    ①:存储方式灵活,插入删除的时间复杂度为O(1),而顺序表最坏情况插入删除时间复杂度为O(n)
    ②:顺序表中数组的扩容需要申请新空间,释放旧空间,会有不小的消耗
    ③:顺序表中数组扩容一般呈二倍增长,不能做到随用随取,有一定的空间浪费。
    缺点:
    顺序表修改某个数据的时候可以直接依靠下标来进行修改,而链表不可以。

  4. 单链表:
    ①:不带头节点的单向非循环单链表(以下单链表都以此为例):
    没有指定头节点,需要我们自己创建一个引用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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/55353
推荐阅读
相关标签
  

闽ICP备14008679号