1. 程式人生 > >java建立雙向迴圈連結串列

java建立雙向迴圈連結串列

/**
 * 
 */
/**   
 * @author jueying:   
 * @version 建立時間:2018-10-23 下午01:26:47   
 * 類說明   
 */
/**
 * @author jueying
 *
 */
public class Test6 {
	
	int top=-1;//棧頂指標
	int size=0;//棧大小
	 static Node headNode;
	
    int i=0;
	class Node{
		private Node SuffixNext;//後指標
 
		private Node prefixNext;//前指標
		
		private Integer data;//資料域
		
	}

	
	//雙向迴圈列表
	public void Doublerecicle(Node node,int data){
		if(i<=10){
			Node newNode=new Node();//建立新的結點
			newNode.data=new Integer(i);//設定資料域
			newNode.SuffixNext=null;
			node.SuffixNext=newNode;
			newNode.prefixNext=node;
			Doublerecicle(newNode,++i);
		}else{
			node.SuffixNext=headNode;
			headNode.prefixNext=node;
		}
		
	}
	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		   Test6 test=new Test6();
		   headNode=test.new Node();//頭指標
		   headNode.data=null;
		   new Test6().Doublerecicle(headNode,0);//迴圈連結串列
          
		   
		   int k=0;
		   //前迴圈輸出連結串列   從頭到尾輸出,在從尾到頭輸出即可
		  /* while(headNode.SuffixNext!=null&&k<=23){
			   headNode=headNode.SuffixNext;
			   ++k;
			   if(headNode.data!=null)
			   System.out.print(headNode.data+"  ");
		   }*/
		   
		   //後迴圈輸出連結串列   從尾到頭輸出,在從頭到尾輸出即可
		   while(headNode.prefixNext!=null&&k<=23){
			   headNode=headNode.prefixNext;
			   ++k;
			   if(headNode.data!=null)
			   System.out.print(headNode.data+"  ");
		   }
		   
		   
		   
	}

}