/**
* @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
关于单链表的几种操作
最新推荐文章于 2021-08-27 21:12:23 发布
本文详细探讨了单链表的基础知识,包括插入、删除、反转和查找等常见操作。通过实例解析,揭示了单链表在数据结构中的重要地位,并讨论了其在Java编程中的实现细节。此外,还分析了单链表与队列的关系及其应用场景。
摘要由CSDN通过智能技术生成