用java实现单链表

来源:互联网 发布:英语好的软件 编辑:程序博客网 时间:2024/05/16 07:46
public class Node { 

  private Object data; 

  private Node next; 
    
  Node(Object data,Node next){ 
    this.data = data; 
    this.next = next; 
  } 

  public Object getData() { 
    return data; 
  } 

  public void setData(Object data) { 
    this.data = data; 
  } 

  public Node getNext() { 
    return next; 
  } 

  public void setNext(Node next) { 
    this.next = next; 
  } 


 
其次,构建单链表类:
  

public class List { 
  private Node head ; 
  private int length; 
    
  public List(){ 
    head = new Node(null,null); 
    length = 0; 
  } 
    
  public void addhead(Object item){ 
    Node node = new Node(item,null); 
    node.setNext(head.getNext()); 
    head.setNext(node);    
    length++; 
  } 
    
  public void addtail(Object item){ 
    Node node = new Node(item,null); 
    Node temp = head; 
    while(null != temp.getNext()){ 
      temp = temp.getNext(); 
    } 
    temp.setNext(node); 
    length++; 
  } 
    
  public void addindex(Object item,int index){ 
    Node node = new Node(item,null); 
    Node temp = head; 
    for(int i=0; i<index-1;i++){ 
      temp = temp.getNext(); 
    } 
    node.setNext(temp.getNext()); 
    temp.setNext(node); 
    length++; 

     
  } 
    
  public void find(int index){ 
    if(index<1 || index >length){ 
      System.out.print("此位置空!"); 
    } 
    Node temp = head; 
    for(int i=0; i<index;i++){ 
      temp = temp.getNext(); 
    } 
    System.out.println("链表中第"+index+"个位置的值为"+temp.getData()); 
  } 
    
  public void delindex(int index){ 
    if(index<1 || index >length){ 
      System.out.print("位置不存在!"); 
    } 
    Node temp = head; 
    for(int i=0; i<index-1;i++){ 
      temp = temp.getNext(); 
    } 
    temp.setNext(temp.getNext().getNext()); 
    length--; 
     
  } 
    
    
  public void print(){ 
    Node temp = head; 
    while(null != temp.getNext()){ 
      System.out.println(temp.getNext().getData()); 
      temp = temp.getNext();        
    } 
    System.out.println("链表长度为:"+length); 
  } 
    
  public static void main(String[] args){ 
    List list = new List(); 
    list.addhead(2); 
    list.addhead(3); 
    list.addhead(4); 
    list.addtail(5); 
    list.addindex("第二", 2); 
    
    list.print(); 
    list.find(3); 
     
  } 
0 0