模拟链表存储数据

mac2025-12-04  6

public static void main(String[] args) { MyLinkedList my=new MyLinkedList(); my.add("你好1"); my.add("你好2"); my.add("你好3"); System.out.println(my.size()); System.out.println(my.get(0)); System.out.println(my.get(1)); System.out.println(my.get(2)); } } //自定义容器类 class MyLinkedList{ //记录链表头节点 private Node head; //记录容器中数据的个数 private int size; public MyLinkedList() { } //添加数据的方法 public void add(String value) { Node node=new Node(value,null); //第一次添加,当前节点作为链表头存在 if(head==null){ head=node; size++; return; } //把当前节点挂到原链表的最后 ,定义为原链表的最后一个节点,把当前的节点地址赋值给原链表的最后一个节点的nextNode属性 Node temp=head; //永远指向当前的节点 temp指向最后一个节点 while(true){ //temp作为最后一个节点出现,最后一个节点记录下一个节点的地址为null if(temp.getNextNode()==null){ temp.setNextNode(node); break; } temp=temp.getNextNode(); } size++; } public int size(){ return this.size; } //根据索引获取的方法 public String get(int index){ //判断索引 if(index<0 || index>=size){ return "索引越界"; } Node temp=head; for(int i=0;i<index;i++){ //temp指向下一个节点 temp=temp.getNextNode(); } return temp.getData(); } } //节点 class Node{ //存储的数据 private String data; //下一个节点的地址 private Node nextNode; public Node(String data, Node nextNode) { super(); this.data = data; this.nextNode = nextNode; } public String getData() { return data; } public void setData(String data) { this.data = data; } public Node getNextNode() { return nextNode; } public void setNextNode(Node nextNode) { this.nextNode = nextNode; } @Override public String toString() { return "Node [data=" + data + ", nextNode=" + nextNode + "]"; }
最新回复(0)