2016-12-02 3 views
-1

Я читал о очередях в реализации Java. Я хочу, чтобы реализовать следующую задачу:Обратный порядок для всего списка для doublelyList

public class DoublyLinkedList 
{ 
    private Node first; // the first Node in the list 
    private Node last; // the last Node in the list 

    private class Node 
    { 
     private Point p; 
     private Node prev; // the previous Node 
     private Node next; // the next Node 
    } 

    public void reverse() 
    { 
     // your code 
    } 
} 

Я сделал так:

public void reverse() { // that reverses the order of the entire list 
    if (first == null && last == null) { 
     throw new RuntimeException(); 
    } 

    Node current = first; 
    while (current!=null) { 
     current.next= current.next.prev; 
     current.prev=current.prev.next; 
     current=current.next; 
    } 
} 

я делаю правильно? спасибо

+0

делает то, что у вас есть работа, как ожидалось? – dave823

+2

'throw new' ... отсутствует что-то там. – AxelH

+0

https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html – xenteros

ответ

2

Вы не изменяете первый и последний указатели в своем коде. Почему вы бросаете исключение, если список пуст?

Я думаю, я хотел бы сделать что-то вроде:

public void reverse() 
{ 
    Node current = first; 
    while (current != null) { 
     Node next = current.next; 
     current.next = current.prev; 
     current.prev = next; 
     current = next; 
    } 
    Node temp = first; 
    first = last; 
    last = temp; 
} 
+1

ты большой спасибо брату :) Благословит тебя Бог – Joe

+0

У меня есть еще один вопрос: посмотрите на этот код: public class ArrayQueue {private String [] a; private int N; private int back; частный внутренний фронт; public boolean isEmpty() {return a.length == 0; } Правильно ли используется метод isEmpty()? спасибо – Joe

+0

Это должно быть в другом посте, но на первый взгляд, я бы предпочел вернуть N == 0 –

2

Нет, это не так. current.next = current.next.prev - это как current.next = current и current.prev = current.prev.next - это как current.prev = current. Пожалуйста, приложите отладчик и следуйте своему коду, чтобы найти ошибки и правильное решение. Мы не будем делать домашнее задание здесь. ;-)

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