package com.example.demo.web.LianBiao; import lombok.Data; /** * 节点 */ @Data public class MyNode { int value;//值 MyNode next = null;//下一个节点 public MyNode(int value){ this.value = value; } }
package com.example.demo.web.LianBiao; import lombok.Data; /** * 链表实现 */ @Data public class MyLinkdeList { MyNode first; /** * 添加值 * @param value */ public void add(int value){ if(this.getFirst() == null){ this.setFirst( new MyNode(value)); return; } MyNode next = first; while (next.getNext()!=null){ next = next.getNext();//获取下一个节点 } next.setNext(new MyNode(value));//赋值 } /** * 遍历输出每个节点 */ public void outList(){ if(this.getFirst() != null){ System.out.println(this.getFirst().getValue()); MyNode node = this.getFirst(); while (node.getNext()!=null){ System.out.println(node.getNext().getValue()); node =node.getNext(); } } } /** * 根据下标删除节点 * @param index */ public void delete(long index){ if(index==0){ this.setFirst(this.getFirst().getNext()); return; } MyNode node = this.getFirst(); long i = 1; while (node.getNext()!=null){ if(i==index){ if(node.getNext().getNext()!=null){ node.setNext(node.getNext().getNext()); }else { node.setNext(null); } return; } node = node.getNext(); i++; } System.out.println("下标越界了"); } /** * 获取长度 * @return */ public long getSize(){ if(this.getFirst() == null){ return 0; } long size = 1; MyNode next = first; while (next.getNext()!=null){ next = next.getNext();//获取下一个节点 size++; } return size; } public static void main(String[] args) { MyLinkdeList list = new MyLinkdeList(); list.add(1); list.add(2); list.add(4); list.add(6); list.add(7); list.delete(4); list.outList(); System.out.println(list.getSize()); } }