单链表插入的实现

单链表插入的实现

导语:在平时开发的项目中经常会用到LinkedList集合来存储数据,而LinkedList是基于链表结构来存储数据的,包括单向链表和双向链表。本片文章将着重详细介绍一下单链表的基本插入操作

链表:首先先来介绍一下单链表的基本结构,一个单链表的节点(Node)分为两部分,第一个部分保存或者显示结点的信息,另一个部分存储的是下一个结点的地址,每个结点对象维护一个 next 引用,next引用指向下一个节点对象,最后一个结点存储的地址的部分指向的是空值。

在这里插入图片描述
1.在链表的头结点前插入新的结点(删除头结点)

插入代码实现

//在链表头部添加元素
public Object addHead(Object obj){
  Node newhead = new Node(obj);
    if(size == 0){
       head = newhead; 
    }else{
       newhead.next = head;
       head = newhead;
    }
      size++;
      return obj;
}

插入代码分析

1.首先对原链表进行判空操作,如果原链表为空,则直接将新的结点赋给头结点

2.如果原链表不为空,那么将新结点下一个结点指向head

在这里插入图片描述
3.将新结点作为头结点
在这里插入图片描述
删除代码实现

//在单链表头部进行删除
public Object delHead(){
	Object obj = head.data;
	head = head.next;	
	size--;	
	return obj;	
}

删除代码分析

1.将要删除头结点赋给obj,最后返回

在这里插入图片描述

2.将所删头结点的下一个结点作为新的头结点

在这里插入图片描述
3.最后链表的size-1,长度减1

2.在链表的中间结点插入新的结点(删除中间任意一结点)

插入代码实现

public Node InsertNode(Node newhead,Node pre){
//newhead表示要插入的新结点
//假设在ptr结点和nex结点中间插入
     ......
     newhead.next=pre.next
     pre.next = newhead
     ......

插入代码分析

1.新结点指向nex结点(即指向pre结点的下一个结点)

在这里插入图片描述
2.将pre结点的指针指向新结点
在这里插入图片描述
删除代码实现

public Node DelNode(Node delnode,Node pre){
//delnode表示要删除的结点
//删除pre后面的delnode结点
      ......
      pre.next = delnode.next
      ......
}

删除代码分析

1.只需要将删除结点的上一个结点指向删除结点的下一个结点

在这里插入图片描述

3.在链表的尾结点后插入新的结点(删除尾部结点)

插入代码实现

public Object addTail(Object obj,Node pre){ 
    //表示最后一个结点
     Node newtail = new Node(obj);
     if(size == 0){
       head = newtail; 
     }else{
       newhead.next = newtail;
     }
     size++;
     return obj;
}

插入代码分析

1.直接将原链表的尾结点指向新的结点

在这里插入图片描述

删除代码实现

public Node DelNode(Node delnode,Node pre){
	......
	//pre:倒数第二个结点
	pre.next = null;
	......
}

删除代码分析

1.直接将倒数第二个结点指向null

在这里插入图片描述

结语:到此单链表的三种插入以及删除就介绍完了,如果不正,还请路过的朋友加以指正…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值