单链表及单链表的基本操作

这篇博客介绍了如何使用Java实现单链表的基本操作,包括头增、尾增、头删、尾删、删值,以及解决链表相交、寻找倒数第k个节点、链表逆置、环判断等复杂问题。通过`Entry`类和`Link`类的定义,展示了链表数据结构的应用。
摘要由CSDN通过智能技术生成

package com.tulun.src07;

/**

  • @author Richard
  • @date 2019/9/14 0014-14:50
  • 头增
  • 尾增
  • 头删
  • 尾删
  • 删值
  • 两个链表相交,输出相交节点
  • 输出单链表的倒数第k个节点
  • 单链表的逆置
  • 判断一个单链表是否有环,输出相遇节点
  • 输出环的入口节点:当前链表的入口节点

*/

class Entry<T extends Comparable>{
private T value;
private Entry next;
public Entry(T value){
this.value=value;
}

public T getValue() {
    return value;
}

public void setValue(T value) {
    this.value = value;
}

public Entry getNext() {
    return next;
}

public void setNext(Entry next) {
    this.next = next;
}

}
public class Link<T extends Comparable> {
private Entry headEntry;
private Entry tailEntry;

public Link() {
    headEntry = null;
    tailEntry = null;
}

public Entry<T> getEntry(T value) {
    for (Entry p = headEntry; p != null; p = p.getNext()) {
        if (p.getValue().compareTo(value) == 0) {
            return p;
        }
    }
    return null;
}

public void addHead(T value) {
    Entry<T> newEntry = new Entry<>(value);
    //当原链表为空链表时
    if (headEntry == null) {
        headEntry = newEntry;
        tailEntry = newEntry;
        return;
    } else {//当原链表有一个及以上节点时
        headEntry = newEntry.getNext();//newEntry.setNext(headEntry);
        headEntry=newEntry;

    }
}
public void addTail(T val
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值