2011-12-15 3 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; 
} 

Вот мой класс узел

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; 
} 

} 

Я получаю ошибку «метод setNext в классе DNode не могут быть применены к данным типам, но я не знаю, Зачем. Любая помощь?

(Не читайте это, это использовать символы, так что позволит мне сообщение)

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'? 'É'? 'f'? ... – NPE

+0

' f.setNext() = e; 'не является законным Java –

+0

@aix что? это, наверное, неправильно, но я просто пытаюсь заставить его работать. Да, он работает только в середине связанного списка и требует ввода всех трех узлов, чего я не хотел. – Elliot678

ответ

2

Вам нужно сделать:

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

Среди многих других вещей. Чтобы удалить узел, вам не нужно передавать три узла. По своей природе узел с двойной связью будет иметь все, что содержится в одном объекте, который нужно удалить. – Jason482

Смежные вопросы