串列反轉的問題 |
尚未結案
|
Knives
一般會員 發表:2 回覆:1 積分:0 註冊:2004-03-27 發送簡訊給我 |
我已經有用搜尋的方式,可是都沒人回,所以想請問
下面這個程式,我跑出來的結果是:
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 發送簡訊給我 |
引言: 我已經有用搜尋的方式,可是都沒人回,所以想請問 下面這個程式,我跑出來的結果是: 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 請問該如何做 我的程式如下我自己已經知道問題的解答了 因為一開始的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為新節點的話,接下來的程式都會發生故障了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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |