2016-10-25 31 views
-1

我想做一個鏈接列表我有一個工作插入方法,但是我不知道如何設置頭到列表的前面。設置鏈接列表中的頭

public void insert(Object o) {  
    curr = new Link(o,curr); 
    if(ticker ==0){ 
     head = curr; 
     tail = curr; 
    } 
    ticker++; 
} 

這只是當頭需要在前面時纔將頭部放在列表的末尾。任何幫助將非常感激。如果你需要其他東西來解決這個問題,讓我知道。

+0

您的預期成果是什麼? –

+0

如果我按順序放入a,b,c,那麼頭應該指向c,尾巴應該指向a。 – Darkhail

+0

你聲明你有一個工作插入方法...'insert(0,newHeadObject)' – donkon

回答

0

我並不確切地知道你的鏈接是什麼,但我想你應該創建一個Node類像

class Node { 
    Object value; 
    Node next; 
    Node pre; // optional 
} 

和你的頭部和尾部將是節點的實例。

+0

對不起,我已經有了,如果你想我可以爲您發佈該代碼,以便了解我正在處理的內容。是的,請給我 – Darkhail

+0

。顯示它 –

0

我認爲你的問題在於Link的構造函數。根據你的結果,新鏈接存儲對舊鏈接的引用;這是相反的,因此你的列表是相反的。設置爲用鏈路參數的下一個節點被實例化,像

public Link(Object value, Link previous) { 
    ... 
    previous.nextLink = this; 
    ... 
} 

鏈表的頭是指加入,不到最後,正如您在您的評論指出的第一元素。這只是術語。

您的插入方法設置tail = current需要一個else分支,因此您始終有一個對列表末尾的引用。 (head已經指向列表的開頭,哪個節點是頭部不會改變)事實上,如果你這樣做,你甚至不需要變量tail,因爲current將用於相同的目的。

+0

唯一的問題是我的插入方法把列表放在c,b,一個命令。並且當我這樣做時,頭指向一個。我如何重新組織清單,使其成爲a,b,c並且頭仍然指向開頭? – Darkhail