2017年7月29日 星期六

(Java)環狀鏈結

  1. /* 
  2.  *  
  3.  * 環狀鏈結 
  4.  */  
  5. public class Circular_List {  
  6.   
  7.   public static void main(String[] args) {  
  8.   CircularList nss = new CircularList();  
  9.   for(int i = 1 ; i < 12; i++){  
  10.    nss.Insert("來福"+i, i+100, i);  
  11.   }  
  12.   CircularList nss2 = new CircularList();  
  13.   for(int i = 1 ; i < 12; i++){  
  14.    nss2.Insert("雄威"+i, i+100, i);  
  15.   }  
  16.   nss.connect(nss2);  
  17.            nss.print();  
  18.  }  
  19. }  
  20. class  CircularList{  
  21.  Node frist , last;  
  22.  void print(){  
  23.   Node curr = frist ;  
  24.   while(true){  
  25.    System.out.println("( "+curr.name+" )  ("+curr.score+" )  ("+curr.num+" ) ");  
  26.    curr = curr.next ;  
  27.    if(curr == frist ) break;  
  28.      }  
  29.   if(frist == null) System.out.println("空串列") ;  
  30.  }  
  31.    void  Insert(String n , int s , int nu){  
  32.    Node newNode = new Node(n,s,nu);  
  33.    if(frist == null){  
  34.     frist = newNode ;  
  35.     last = newNode ;  
  36.     last.next = frist ;  
  37.    }else{  
  38.     last.next  = newNode ;  
  39.     last = last.next ;  
  40.     last.next = frist ;  
  41.     }     
  42.   }  
  43.    void remove(int num){  
  44.       if(frist.num == num){  
  45.        frist = frist.next ;  
  46.        last.next = frist ;  
  47.       }else if(last.num == num){  
  48.        Node curr = frist ;  
  49.        while(curr.next != last) curr = curr.next ;  
  50.        last = curr ;  
  51.        curr.next = frist;  
  52.       }else {  
  53.        Node tmp = frist , current = frist ;   
  54.        while(num != current.num){   
  55.         tmp = current ;  
  56.         current = current.next ;  
  57.        }  
  58.        tmp.next = current.next ;  
  59.       }  
  60.      }  
  61.    void Insert(int num , Node node){  
  62.     if(frist == null){  
  63.     frist = node ;  
  64.     last = node ;  
  65.     last.next = frist ;  
  66.     return ;  
  67.    }  
  68.     if(frist.num == num){  
  69.      last.next = node ;  
  70.      node.next = frist ;  
  71.      frist = node ;   
  72.     }else if(last.num == num){  
  73.       last.next = node ;  
  74.       last = last.next ;  
  75.       last.next = frist ;  
  76.       }else{  
  77.        Node tmp = frist , current = frist ;   
  78.        try{   
  79.        while(num != current.num){   
  80.         tmp = current ;  
  81.         current = current.next ;  
  82.        }        
  83.        tmp.next = node ;  
  84.        node.next = current ;  
  85.        }catch(Exception ex){  
  86.         System.out.println("沒有符合座號");  
  87.        }  
  88.       }      
  89.    }  
  90.    void connect(CircularList L2){  
  91.     Node fristnext = frist.next ;  
  92.     this.frist.next = L2.frist.next;  
  93.     L2.frist.next = fristnext ;  
  94.       
  95.    }  
  96. }  

沒有留言:

張貼留言

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