双链表的Java实现

    科技2025-09-29  55

    双链表的Java实现

    双链表的Java实现

    public class DoubleLinkedList { Node head=new Node(0); // 添加一个节点 public void add(Node node){ Node temp= head; while (true){ if(temp.next== null){ //已经到了链表的末尾 break; } temp= temp.next; } node.pre= temp; temp.next= node; } // 打印所有元素 public void print(){ Node temp= head; if(temp.next== null){ System.out.println("这是个空链表"); return; } while (true){ temp= temp.next; if (temp.next== null){ // 已经到了链表的末尾 System.out.println(temp.data); break; } System.out.println(temp.data); } } // 得到链表的长度 public int length(){ Node temp= head; int length= 0; while (true){ temp= temp.next; // 已经循环到了链表的末尾 if(temp.next== null){ length+= 1; break; } length+= 1; } return length; } // 输出第i个节点的数据 public int getI(int i){ Node temp= head; int flag= -1; if(i<0||i>length()){ return -1; } while (true){ temp= temp.next; flag+= 1; if(flag== i){ return temp.data; } } } // 删除编号为i的节点 public void delI(int i){ Node temp= head; int flag= -1; if(i<0||i>length()){ System.out.println("输入有误"); } while (true){ if(i== 0){ // 如果要删除的节点编号为0 555那也太简单了 temp.next= temp.next.next; break; } temp= temp.next; flag+= 1; if(flag== i){ temp.pre.next= temp.next; System.out.println("编号为"+i+"的数据删除成功"); break; } } } }
    Processed: 0.009, SQL: 9