链表中结点的插入和删除

本文详细探讨了链表数据结构中如何进行节点的插入和删除操作,包括不带傀儡节点和带傀儡节点两种情况,涵盖了中间插入、头部插入、尾插、按值删除、按位置删除、按下标删除、尾删和‘移形换影’等常见操作,分析了链表删除操作的时间复杂度,并对比了与顺序表删除操作的效率差异。
摘要由CSDN通过智能技术生成

目录

一、创建链表

二、插入和删除(不带傀儡结点)

1.插入结点

①中间插入

②头部插入

③尾插

2.删除结点

①按值删除

②按位置删除

③按下标删除

④尾删

⑤“移形换影”

三、插入和删除(带傀儡结点)

1.插入结点

2.删除结点


一、创建链表

创建Nodee类

//使用Nodee表示结点
public class Nodee {
    public int val;
    public Nodee next=null;

    public Nodee(int val) {
        this.val = val;
    }
    @Override
    public String toString() {
        return "["+val+"]";
    }
}

创建链表 

//通过此方法,创建出一个固定内容的链表
    public static Node creatList(){
        //创建结点
        Nodee a=new Nodee(1);
        Nodee b=new Nodee(2);
        Nodee c=new Nodee(3);
        Nodee d=new Nodee(4);
 
        //给引用进行赋值
        a.next=b;//把 b的地址赋值到a的next中
        b.next=c;//把 c的地址赋值到b的next中
        c.next=d;//把 d的地址赋值到c的next中
        d.next=null;//这行可以不写,Node类中已初始化成null
        return a;//返回头结点
    }

获取头结点

Nodee head=creatList();

二、插入和删除(不带傀儡结点)

1.插入结点

①中间插入

        //1.插入结点到链表中间
        Nodee prev=head;
        //创建新结点
        Nodee newNode=new Nodee(100);
        //1)先把newNode的next指向prev的next
        newNode.next=prev.next;
        //2)再把prev的next指向newNode
        prev.next=newNode;

②头部插入

        Nodee newNode1=new Nodee(99);
        //1)先把新结点的next指向head
        newNode1.next=head;
        //2)让head指向新的结点
        head=newNode1;

③尾插

    public static void WeiCha(Nodee head,int v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值