2015-11-02 4 views
0

я сделал LinkedList с очереди, но мне нужна помощь для одного методаLinkedList Перемещение последнего элемента к первому элементу

public class QueueLinkedList{ 
private Node first; 
private Node last; 
public QueueLinkedList(){ 
    first = null; 
    last = null; 
} 

class Node{ 
    public Object data; 
    public Node next; 
} 
    ... 
public void lastToFirst(){ 
    Node newNode = new Node(); 
    newNode.data = last.data; 
    newNode.next = first; 
    first = newNode; 
    last = null; 
} 

Я добавил «1», «2», «3», «4», и назвали lastToFirst,

и распечатан.

мое ожидаемое значение было 4123

, но он дал мне 41234.

Как я мог удалить последнее значение 4?

+1

, даже если вы установите last на null (что тоже не имеет смысла, новый последний будет последним, но один ...), последний, но один узел все равно будет ссылаться на узел '4' в поле 'next' –

ответ

1

Либо сделать его двойной связанный список, вводя public Node prev; к Node класс и делать last.prev.next = null или сделать линейное сканирование, начиная с first, поиск узла с node.next == last и изменить атрибут этого узла next к нулю.