2011-12-15 7 views
-1

はここで今二重リンクリストからノードを削除しますか?

public DNode removeDnode(DNode v, DNode e, DNode f) 
{ 
    e = v.nextNode(); 
    f = v.prevNode(); 
    f.setNext() = e; 
    e.setPrev() = f; 
    v.setPrev(null); 
    v.setNext(null); 
    size = size - 1; 
    return v; 
} 

に方法次第ですここで私は与えられたタイプに適用することができないクラスDNodeでエラー「メソッドsetNextを取得しています

public class DNode 
{ 

public String element; 
public DNode next; 
public DNode previous; 

public DNode(String e, DNode n) 
{ 
    element = e; 
    next = n; 
}  

public void setElement(String newElem) 
{ 
    element = newElem; 
} 
public void setNext(DNode newNext) 
{ 
    next = newNext; 
} 
public void setPrev(DNode newPrev) 
{ 
    previous = newPrev; 
} 
public String getElement() 
{ 
    return element; 
} 
public DNode nextNode() 
{ 
    return next; 
} 
public DNode prevNode() 
{ 
    return previous; 
} 

} 

私のノードクラスだが、私は知りませんなぜ。どんな助け?

EDIT(それは私のポストできるようになるので、これは文字を使用することでこれを読んではいけない):

public DNode removeDnode(DNode current) 
{ 
    DNode next = current.nextNode(); 
    DNode previous = current.prevNode(); 
    previous.setNext(next); 
    next.setPrev(previous); 
    current.setPrev(null); 
    current.setNext(null); 
    size = size - 1; 
    return current; 
} 

以下の新しい方法を、私はの終わりと始まりの対処はどうすればよいですリスト

+2

'v'? 'e'? 'f'?... – NPE

+0

' f.setNext()= e; 'は法律上のJavaではありません –

+0

@aix何?それはおそらく間違っているが、私はそれを働かせようとしているだけだ。うん、それはリンクされたリストの真ん中でのみ動作し、私が望まない3つのノード入力をすべて必要とする。 – Elliot678

答えて

2

あなたが実行する必要があります。

f.setNext(e); 
e.setPrev(f); 
+0

他にも多くのものがあります。ノードを削除するには、3つのノードを渡す必要はありません。本質的に、二重にリンクされたリストノードには、削除を行うために必要な1つのオブジェクトに含まれるすべてが含まれます。 – Jason482

関連する問題