全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1911
推到 Plurk!
推到 Facebook!

串列反轉的問題

尚未結案
Knives
一般會員


發表:2
回覆:1
積分:0
註冊:2004-03-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-20 20:19:42 IP:140.128.xxx.xxx 未訂閱
我已經有用搜尋的方式,可是都沒人回,所以想請問  下面這個程式,我跑出來的結果是: TNodeLinkList$AddNode@126b249= Hello TNodeLinkList$AddNode@182f0db= World TNodeLinkList$AddNode@192d342= Test 下面是反轉過來的結果: TNodeLinkList$AddNode@182f0db= World TNodeLinkList$AddNode@126b249= Hello TNodeLinkList$AddNode@6b97fd= LinkList@1c78e57 可是我想要的答案是 TNodeLinkList$AddNode@126b249= Hello TNodeLinkList$AddNode@182f0db= World TNodeLinkList$AddNode@192d342= Test 下面是反轉過來的結果: TNodeLinkList$AddNode@182f0db= Test TNodeLinkList$AddNode@126b249= World TNodeLinkList$AddNode@6b97fd= Hello 請問該如何做 我的程式如下
public  class LinkList {
public  static void main(String[] args)
{
                LinkList l= new LinkList();
        
                l.add("Hello");
                l.add("World");
                l.add("Test");
                l.print();
                System.out.println("下面是反轉過來的結果:");
                l.invert();
                l.print();
                }
         class AddNode
        {
                AddNode next;
                Object data;
                AddNode(Object o) 
                {
                        data = o;
                        next=null;
                }
        }        
        protected AddNode root;
        protected AddNode last;
        protected AddNode middle;
        protected AddNode trail;
        protected AddNode temp;
        LinkList()
        {        
                root =         new AddNode(this);
                last =        root;
        }
        void add(Object o)
        {
        last.next =  new AddNode(o);
        last = last.next;
        }
        void print()
        {
        for (AddNode p=root.next;p !=null;p =p.next)
                System.out.println("TNode"   p   "= "  p.data);
        }
        void invert()
        {
        while(root.next!=null)
        {
                trail = middle;
                middle = root;
                root = root.next;
                middle.next =trail;            }
        
        root.next =middle;
}
}
發表人 - knives 於 2004/10/20 20:21:01
Knives
一般會員


發表:2
回覆:1
積分:0
註冊:2004-03-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-28 13:39:35 IP:140.128.xxx.xxx 未訂閱
引言: 我已經有用搜尋的方式,可是都沒人回,所以想請問 下面這個程式,我跑出來的結果是: TNodeLinkList$AddNode@126b249= Hello TNodeLinkList$AddNode@182f0db= World TNodeLinkList$AddNode@192d342= Test 下面是反轉過來的結果: TNodeLinkList$AddNode@182f0db= World TNodeLinkList$AddNode@126b249= Hello TNodeLinkList$AddNode@6b97fd= LinkList@1c78e57 可是我想要的答案是 TNodeLinkList$AddNode@126b249= Hello TNodeLinkList$AddNode@182f0db= World TNodeLinkList$AddNode@192d342= Test 下面是反轉過來的結果: TNodeLinkList$AddNode@182f0db= Test TNodeLinkList$AddNode@126b249= World TNodeLinkList$AddNode@6b97fd= Hello 請問該如何做 我的程式如下
public  class LinkList {
public  static void main(String[] args)
{
                LinkList l= new LinkList();
        
                l.add("Hello");
                l.add("World");
                l.add("Test");
                l.print();
                System.out.println("下面是反轉過來的結果:");
                l.invert();
                l.print();
                }
         class AddNode
        {
                AddNode next;
                Object data;
                AddNode(Object o) 
                {
                        data = o;
                        next=null;
                }
        }        
        protected AddNode root;
        protected AddNode last;
        protected AddNode middle;
        protected AddNode trail;
        protected AddNode temp;
        LinkList()
        {        
                root =         new AddNode(this);
                last =        root;
        }
        void add(Object o)
        {
        last.next =  new AddNode(o);
        last = last.next;
        }
        void print()
        {
        for (AddNode p=root.next;p !=null;p =p.next)
                System.out.println("TNode"   p   "= "  p.data);
        }
        void invert()
        {
        while(root.next!=null)
        {
                trail = middle;
                middle = root;
                root = root.next;
                middle.next =trail;            }
        
        root.next =middle;
}
}
發表人 - knives 於 2004/10/20 20:21:01
我自己已經知道問題的解答了 因為一開始的LinkList的建構式中,系統自動地新增一空Node 所以其實在 for (AddNode p=root.next;p !=null;p =p.next) System.out.println("TNode" p "= " p.data); 這裡的p是指向下一節點,而原先最後一個節點Test指向那個建構式自己建出來的節點,這樣就印不出Test了 所以我把p改成是root 這樣就可以把所有的節點都印出來 只是,我比較好奇如何不要讓系統自動建一個,因為照我這樣的寫法,如果我的 LinkList的建構式,不先宣告,root為新節點的話,接下來的程式都會發生故障了
系統時間:2024-05-02 20:14:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!