单链表的逆序输出

来源:互联网 发布:无锡网络作协会员 编辑:程序博客网 时间:2024/06/10 03:46

package linkList;
class Link3{
 public int no;
 Link3 next;
 public Link3(int no){
  this.no=no;
 }
}
class CircleLink{
 //指向第一个结点的引用不能动
 Link3 firstLink;
 Link3 temp;
 int len;
 //设置环境链表的大小
 public void setLen(int len){
  this.len=len;
 }
 //初始化环境链表
 public void createCircleLink(){
  for(int i=1;i<=len;i++){
   if(i==1){
    Link3 lin=new Link3(i);
    this.firstLink=lin;
    this.temp=lin;
    //System.out.println("1");
   }else{
    //System.out.println("其它");
    //最后一个结点
    if(i==len){
     //System.out.println("最后"); 
    Link3 lin=new Link3(i);
    temp.next=lin;
    temp=lin;
    temp.next=this.firstLink;
    
    }
    else{
    Link3 lin=new Link3(i);
    //创建循环链表时的连线
    temp.next=lin;
    //往前走时的方法
    temp=lin;
   }
   
   }
  }
 }
 public void show(){
  Link3 temp=this.firstLink;
  do{
   System.out.print(temp.no+" ");
   temp=temp.next;
  }while(temp!=this.firstLink);
 }
 public void TrShow(){
        temp.next=this.firstLink;
        //找出最后一个元素
        Link3 temp2=temp;
        for(int i=1;i<=len;i++){
         System.out.print(temp2.no+" ");
  while(temp2.next!=temp){
   //System.out.print(temp.no+" ");
   temp2=temp2.next;
  }
  temp=temp2;
  
        }
  
 }
 public static void main(String[] args){
  CircleLink clk=new CircleLink();
  clk.setLen(5);
  clk.createCircleLink();
  System.out.println("正向输出:");
  clk.show();
  System.out.println();
  System.out.println("逆向输出:");
  clk.TrShow();
 }
}