java实现链表

来源:互联网 发布:mac os启动盘制作 编辑:程序博客网 时间:2024/04/30 00:38

主要定义了两个类,一个节点类,一个单链表类
先看节点类

//节点类  public class Node {   protected Node next; //指针域   protected int data;//数据域   public Node( int data) {         this. data = data;   }   //显示此节点   public void display() {        System. out.print( data + " ");   }  } 

下面是单链表 能够实现对链表的增删查改

//单链表  public class LinkList {   public Node first; // 定义一个头结点   private int pos = 0;// 节点的位置   public LinkList() {         this. first = null;   }   // 插入一个头节点   public void addFirstNode( int data) {        Node node = new Node(data);        node. next = first;         first = node;   }   // 删除一个头结点,并返回头结点   public Node deleteFirstNode() {        Node tempNode = first;         first = tempNode. next;         return tempNode;   }   // 在任意位置插入节点 在index的后面插入   public void add(int index, int data) {        Node node = new Node(data);        Node current = first;        Node previous = first;         while ( pos != index) {            previous = current;            current = current. next;             pos++;        }        node. next = current;        previous. next = node;         pos = 0;   }   // 删除任意位置的节点   public Node deleteByPos( int index) {        Node current = first;        Node previous = first;         while ( pos != index) {             pos++;            previous = current;            current = current. next;        }         if(current == first) {             first = first. next;        } else {             pos = 0;            previous. next = current. next;        }         return current;   }   // 根据节点的data删除节点(仅仅删除第一个)   public Node deleteByData( int data) {        Node current = first;        Node previous = first; //记住上一个节点         while (current. data != data) {             if (current. next == null) {                  return null;            }            previous = current;            current = current. next;        }         if(current == first) {             first = first. next;        } else {            previous. next = current. next;        }         return current;   }   // 显示出所有的节点信息   public void displayAllNodes() {        Node current = first;         while (current != null) {            current.display();            current = current. next;        }        System. out.println();   }   // 根据位置查找节点信息   public Node findByPos( int index) {        Node current = first;         if ( pos != index) {            current = current. next;             pos++;        }         return current;   }   // 根据数据查找节点信息   public Node findByData( int data) {        Node current = first;         while (current. data != data) {             if (current. next == null)                  return null;            current = current. next;        }         return current;   }  }  

最后是一个测试用例

package learnstack;//测试类  public class test4 {     public static void main(String[] args) {          LinkList linkList = new LinkList();          linkList.addFirstNode(20);          linkList.addFirstNode(21);          linkList.addFirstNode(19);           //19,21,20          linkList.add(1, 22); //19,22,21,20          linkList.add(2, 23); //19,22,23,21,20          linkList.add(3, 99); //19,22,23,99,21,20          linkList.displayAllNodes();  //      Node node = linkList.deleteFirstNode();  //      System.out.println("node : " + node.data);  //      linkList.displayAllNodes();  //      node = linkList.deleteByPos(2);  //      System.out.println("node : " + node.data);  //      linkList.displayAllNodes();  //      linkList.deleteFirstNode();          Node node = linkList.deleteByData(19);  //      Node node = linkList.deleteByPos(0);          System. out.println( "node : " + node. data);          linkList.displayAllNodes();          Node node1 = linkList.findByPos(0);          System. out.println( "node1: " + node1. data);          Node node2 = linkList.findByData(22);          System. out.println( "node2: " + node2. data);     }  }  

最最 后 java中驶入一串字符串 以空格隔开 然后读取到数组中 笔试中常用的方法 记录

Scanner in =new Scanner(System.in);        String s1;        s1=in.nextLine();   //读取输入        String [] arr =s1.split(" ");        int [] num=new int[arr.length];        for(int i=0;i<arr.length;i++){            //arr[i]=s1.substring(i,(i+1));              num[i]=Integer.parseInt(arr[i]);        }         System.out.println(Arrays.toString(num));
0 0