java實現單鏈表

public class Node {this

//指針域

public Node next;

//數據域

public int data;


public Node(int data){

    this.data=data;
}

}指針

public class Link_list {code

private Node head;

private Node current;

//給size的目的是,當判斷邊界的時候,不須要去求長度

private int size=0;

//初始化頭結點

public Link_list(){

    this.head=null;
	
}

//向鏈表中添加數據,都是經過尾部插入的

public void addHead(Link_list head,int data){

   //主要考慮兩種狀況,1 一個節點都沒有,2 有節點的狀況

   //建立一個新的節點
   
    Node temp = new Node(data);
	
    //新節點的next指向head.head
	
    temp.next = head.head;
	
    //head.head指向新建立的節點
	
    head.head=temp;
	
     size++;
	 
    System.out.println(temp.data);
}

public void add_index(Link_list head,int i,int x){

    if(i==0) {
	
        addHead(head,x);
		
        return;
    }
	
    //判斷插入索引的位置是否符合條件
	
    if(i<0||i>size)
	
    {
        System.out.println("插入的索引位置有誤");
		
        return;
    }
	
    //若是程插入進行到此步時,說明該鏈表有很多於一個點,因此j=1
	
    int j=1;
	
    Node p=head.head;
	
    ///找到索引i的位置
	
    while(p.next!=null&&j<i){
	
        j++;
		
        p=p.next;
		
    }

    Node s =new Node(x);
	
    s.next=p.next;
	
    p.next=s;
	
    size++;
	
    System.out.println(s.data);
	
}

//經過索引獲取值

public int getElement(Link_list head,int i)throws Exception{

    int j=0;
	
    //我所給的索引位置是從0開始,而我記錄的size也是從0開始的
	
    if(i<0||i>size)
	
      throw new IndexOutOfBoundsException("查找的索引位置出錯");
	  

    Node p =head.head;
	
    while (p!=null&&j<i){
	
        p=p.next;
		
        j++;
    }
	
    if(j>i)
	
        throw new Exception("查找的索引位置出錯");
		
    return  p.data;

}

//經過索引刪除值

public void delete_list(Link_list head,int i) throws Exception{

    if(i<0||i>=size)
	
        throw new Exception("刪除索引位置出錯");
		
    int j=0;
	
    Node p = head.head;
	
    if(i==0) {
	
        head.head = p.next;
		
        return;
		
    }
    //找出刪除索引的前一個
	
    while (p.next!=null&&j<i-1){
	
        p=p.next;
		
        j++;
		
    }

    p.next=p.next.next;
}

public static void main(String[] args) throws Exception {

   Link_list list = new Link_list();
   
   list.add_index(list,0,110);
   
    list.add_index(list,0,111);
	
    list.add_index(list,2,123);
	
  list.delete_list(list,2  );
  
    System.out.println(list.getElement(list,0));
	
    System.out.println(list.getElement(list,1));
	
}

}索引

相關文章
相關標籤/搜索