2017年7月29日 星期六

(Java)雙向鏈結

  1. /* 
  2.  *  
  3.  *  
  4.  * 雙向鏈結 
  5.  *  
  6.  */  
  7. public class Double_LinkedList {  
  8.  douNode frist , last ;  
  9.  douNode node ;  
  10.  public static void main(String[] args) {  
  11.   Double_LinkedList nss = new Double_LinkedList("來福3",33,1);  
  12.   for(int i = 1 ; i < 12; i++){  
  13.    nss.addNode("來福"+i, i+100, i);  
  14.   }  
  15.           nss.remove(5);  
  16.           nss.remove(10);  
  17.   nss.print();  
  18.   
  19.   }  
  20.  void print(){  
  21.   douNode curr = frist ;  
  22.   while(curr != null){  
  23.    System.out.println(curr.name+" : "+curr.score+"  :  "+curr.num);  
  24.    curr = curr.RLINK ;  
  25.   }  
  26.  }  
  27.  Double_LinkedList(String n, int s, int nu ){  
  28.    node = new douNode(n, s, nu);  
  29.   frist = node ;  
  30.   last = node ;  
  31.  }  
  32.  void addNode(String n, int s, int nu){  
  33.    node = new douNode(n, s, nu);  
  34.    douNode  curr = frist ;  
  35.    last.RLINK = node ;  
  36.    node.LLink = last ;  
  37.    last = node ;  
  38.  }  
  39.  void Insert(int num , douNode Node){  
  40.   if(frist.num == num){  
  41.    Node.RLINK = frist ;  
  42.    frist.LLink = Node ;  
  43.    frist = Node ;  
  44.   }else if(last.num == num){  
  45.    last.RLINK = Node ;  
  46.    Node.LLink = last ;  
  47.    last = Node ;  
  48.   }else{  
  49.    douNode pervious = frist , curr = frist  ;  
  50.    while(curr.num != num){  
  51.     pervious = curr ;  
  52.     curr = curr.RLINK ;  
  53.    }  
  54.    pervious.RLINK = Node ;  
  55.    Node.LLink = pervious ;  
  56.    Node.RLINK = curr ;  
  57.    curr.LLink = Node ;  
  58.   }  
  59.  }  
  60.  void remove(int num ){  
  61.   if(frist.num == num){  
  62.              frist = frist.RLINK ;  
  63.              frist.LLink = null ;  
  64.   }else if(last.num == num){  
  65.              last.LLink.RLINK = null ;  
  66.              last = last.LLink ;  
  67.   }else{  
  68.    douNode pervious = frist , curr = frist  ;  
  69.    while(curr.num != num){  
  70.     pervious = curr ;  
  71.     curr = curr.RLINK ;  
  72.    }  
  73.    pervious.RLINK = curr.RLINK ;  
  74.    curr.RLINK.LLink = pervious ;  
  75.   }  
  76.  }  
  77.    
  78. }  
  79. class douNode  extends Node{  
  80.  douNode LLink ;  
  81.  douNode RLINK ;  
  82.  douNode(String n, int s, int nu ) {  
  83.   super(n, s, nu);  
  84.  }  
  85. }  

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。