爪哇国新游记之十六----泛型单链表类
/** * 单链表节点类 * @param <T> */ class Node<T extends Object>{ protected T value; protected Node next; } /** * 单链表类 * @param <T> */ public class ChainList<T extends Object>{ private Node<T> first; public void addTail(T t){ Node<T> newNode=new Node<T>(); newNode.value=t; if(first==null){ first=newNode; } else{ Node<T> curr=first; while(curr.next!=null){ curr=curr.next; } curr.next=newNode; } } public void addHead(T t){ Node<T> newNode=new Node<T>(); newNode.value=t; newNode.next=first; first=newNode; } public int size(){ int size=0; Node<T> curr=first; while(curr!=null){ size++; curr=curr.next; } return size; } public T get(int index){ if(index<0){ throw new IllegalArgumentException("下标不能是负数"); } else{ Node<T> curr=first; while(curr!=null){ if(index==0){ return curr.value; } index--; curr=curr.next; } throw new NullPointerException(); } } public void remove(int index){ if(index<0){ throw new IllegalArgumentException("下标不能是负数"); } else{ if(index==0){ Node<T> next=first.next; first=next; } else{ Node<T> curr=first; Node<T> prev=curr; while(curr!=null){ if(index==0){ prev.next=curr.next; return; } index--; prev=curr; curr=curr.next; } throw new NullPointerException(); } } } public void display(){ System.out.print("链表元素有"); Node<T> curr=first; while(curr!=null){ System.out.print(curr.value+","); curr=curr.next; } System.out.println(); } public static void main(String[] args){ ChainList<String> ls=new ChainList<String>(); ls.addTail("A"); ls.addTail("B"); ls.addTail("C"); ls.display(); ls.addHead("1"); ls.display(); System.out.println("数组长度为:"+ls.size()); System.out.println("第三个元素为:"+ls.get(2)); for(int i=0;i<ls.size();i++){ System.out.println("第"+(i+1)+"个元素为:"+ls.get(i)); } ls.addTail("E"); ls.addTail("F"); ls.remove(0); ls.display(); ls.remove(1); ls.display(); ls.remove(ls.size()-1); ls.display(); for(int i=0;i<ls.size();i++){ System.out.println("第"+(i+1)+"个元素为:"+ls.get(i)); } } }
输出:
链表元素有A,B,C, 链表元素有1,A,B,C, 数组长度为:4 第三个元素为:B 第1个元素为:1 第2个元素为:A 第3个元素为:B 第4个元素为:C 链表元素有A,B,C,E,F, 链表元素有A,C,E,F, 链表元素有A,C,E, 第1个元素为:A 第2个元素为:C 第3个元素为:E
分类:
Java.数据结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)