关于单链表的几种操作

本文详细探讨了单链表的基础知识,包括插入、删除、反转和查找等常见操作。通过实例解析,揭示了单链表在数据结构中的重要地位,并讨论了其在Java编程中的实现细节。此外,还分析了单链表与队列的关系及其应用场景。
摘要由CSDN通过智能技术生成
/**
 * @author Richard
 * @date 2020/3/21 0021-18:04
 * /*
 * 1. 泛型单链表
 * 2. 添加一个tailEntry; 尾部删除O(n),尾部增加的时间复杂度达到O(1)
 * 3. 输出倒数第k个节点(时间复杂度)
 * 4. 假设两个单链表相交,输出相交节点value(时间复杂度)
 * 5. 判断是否有环
 */


public class Link<T extends Comparable<T>> {
   



    private Entry<T> headEntry;//头节点
    private Entry<T> tailEntry;//尾节点




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

        public T getValue() {
   
            return value;
        }

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

        public Entry<T> getNext() {
   
            return next;
        }

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


    //获取value值为value的节点
    public Entry<T> getEntry(T value){
   
        for (Entry<T> 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;
        }else {
   
            newEntry.setNext(headEntry);
            headEntry = newEntry;
        }
    }

    //尾部插入一个节点
    public void addTail(T value){
   
        Entry<T> newEntry = new Entry<>(value);
        //当链表为空链表时,头节点和尾节点同时指向新插入的节点
        if (headEntry == null){
   
            headEntry = newEntry
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值