程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java-數據結構的問題,反轉鏈式表

java-數據結構的問題,反轉鏈式表

編輯:編程綜合問答
數據結構的問題,反轉鏈式表

如下
class Node{
int value;
Node next;
}

Node change(Node head){
}

需要讓change()函數實現鏈式表的反轉,head為第一個Node,後面可能有多個Node,
比如A->B->C變成C->B->A,結果返回C,要求使用java代碼寫出來,能夠正常運行

最佳回答:


//翻轉鏈表的測試類,功能我就不說了,很明顯的。。。

public class myTest {

public static void main(String[] args) {
    myTest t=new myTest();
    Node l=t.new Node(0,null);
    Scanner in=new Scanner(System.in);
    Node nodelist=l.init(in.nextInt());
    l.display(nodelist);
    nodelist=l.change(nodelist);
    l.display(nodelist);
    in.close();
}

class Node
{
    private int value;
    private Node next;

    public Node(int value,Node next)
    {
        this.value=value;
        this.next=next;
    }

    public Node init(int num)
    {
        Node temp=new Node(0,null);
        Node p=temp;
        Scanner in=new Scanner(System.in);
        for(int i=0;i<num;i++)
        {
            int value=in.nextInt();
            Node t=new Node(value,null);
            p.next=t;
            p=p.next;
        }
        in.close();
        return temp.next;
    }

    public Node change(Node head)
    {
        Node newHead=new Node(0,head);
        Node last;
        for(last=newHead.next;last.next!=null;last=last.next);
        while(newHead.next!=last)
        {
            Node temp=newHead.next;
            newHead.next=temp.next;
            temp.next=last.next;
            last.next=temp;
        }
        return newHead.next;
    }

    public void display(Node head)
    {
        for(Node t=head;t!=null;t=t.next)
            System.out.print(t.value+" ");
        System.out.println();
    }
}

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved