java实现链表的基本操作(增删改查)

本文详细介绍了链表这一数据结构的基本操作,包括链表的创建、删除节点、链表反转、获取中间节点以及判断链表是否为回文链表。通过Java代码实现,帮助读者深入理解链表的运作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链表作为最基本的数据结构,常常出现在笔试和面试题中,今天我们来看看链表的基本操作

关于链表,其实具体的链表的概念就不说了,相信大家都懂,我们直接进入正题。下面的代码是关于单向链表的基本操作(Java实现)

一  链表的创建

public class LinkNode {
	public int val;
	public LinkNode next;
	public void setVal(int val) {
		this.val=val;
	}
}

二  删除链表的某一个节点

只给出链表中的某一个节点,删除掉它,这里我们可以使用复制删除法,具体就是将被删除节点的下一个节点覆盖掉被删除节点,可能有点绕,直接看例子:

有链表A->B->C,我们要删除掉A节点,那么我们只需要将B复制到A就行了,即A.val=B.val,A.next=B.next,此时就完成了复制。具体代码如下:

public LinkNode remove(LinkNode node) {
	node.val=node.next.val;
	node.next=node.next.next;
	return node;
}

三  链表的反转

给出链表的头节点,实现链表的反转

public LinkNode rev(LinkNode head) {
        //用于记录当前节点的上一个节点
	LinkNode prep=null;
        //用于记录当前节点的下一个节点
	LinkNode next=null;
	while(head.next!=null) {
		next=head.next;
                //将当前节点的next指向上一个节点
		head.next=prep;
		prep=head;
		head=next;
	}
    return head;
}

四  拿到链表的中间节点

public LinkNode getMiddle(LinkNode head) {
	if(head==null || head.next==null) {
		return head;
	}
	LinkNode quick=head;
	LinkNode slow=head;
	while(quick.next.next!=null) {
		slow=slow.next;
		quick=quick.next.next;
	}
	return slow;
}

五 判断链表是否为回文链表

public boolean isPalindrome(LinkNode head) {
	if(head==null || head.next==null) {
		return true;
	}
	LinkNode middle=getMiddle(head);
	LinkNode p=rev(middle.next);
	LinkNode q=head;
	while(q!=null && p!=null) {
		if(p.val!=q.val) {
			return false;
		}
                q=q.next;
		p=p.next;
	}
	return true;
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值