2010-03-10 45 views
0

IM學習掛在java中的列表,但我堅持以下幫助清單?

刪除Hobnobs前:波旁酒,脆餅,Hobnobs,奧利奧

刪除Hobnobs後:波旁酒,脆餅,奧利奧

我想創建一個刪除方法,刪除中間節點「Hobnobs」。

Ive得到這到目前爲止

public class Biscuit { 

private BiscuitNode first; 
public Biscuit() 
{ 
    this.first=null; 
} 
public BiscuitNode getFirst() { 
    return first; 
} 
public void insert(BiscuitNode first) { 
    this.first = first; 
} 

public void deleteFirst() 
{ 
    this.first.setSucc(this.first); 
} 

public void delete(String BiscuitName) 
{ 

的Hobnobs是 「BiscuitNode secondLast=new BiscuitNode("Hobnobs", last);

+0

這聽起來像這是一個家庭作業問題。在SO上問作業問題沒什麼不妥,但你應該把它們標記爲「家庭作業」。 但是,在現實生活中,您通常應該使用內置的'java.util.LinkedList' – MatrixFrog

回答

1

在當前節點上使用getSucc()步入節點鏈在一個循環。然後,一旦找到匹配的節點,請將其前任指向其後繼者。例如。如果我們想從以下列表中刪除節點C:

A--->B--->C--->D 

becomes 

A--->B--->D 

你應該能夠弄明白。

+0

對不起,我不明白 – user290794

+0

請參閱http://stackoverflow.com/questions/10042/how-do-i-implement-一個鏈表結構,在Java的。 –

+0

謝謝你,我現在明白了。 – user290794

1

添加一個遞歸方法BiscuitNode,或許命名爲deleteYourSuccessorIfItMatches(String pattern)來檢查,如果它的繼任者的模式匹配,如果確實如此,當前節點的繼任者將被設置爲後繼的接班人,否則該方法被稱爲遞歸上繼任者。調用方法Biscuit.delete(String pattern)必須在first節點上執行相同的操作。