2013-12-12 3 views
1

Пожалуйста, примите мои извинения первым, но я не мог реверс мой Linked List в Java ..Как обратный LinkedList в Java

У меня есть класс и внутренний класс:

MyList{ 

class Element{ 
private Element next; 

public Element getNext(){return next;} 
} 

public void reverseMyList(Element curr) { 

     if (curr.next == null) { 
      head = curr.next; 
      return; 
     } 
     reverseMyList(curr.next); 
     while (curr.next != null) { 
      curr.next.next = curr.next; 
      curr.next = null; 
     } 
}//:~ 

мне нужно обратить My Список, я использую метод reverseMyList, который нуждается в элементе curr. Если мой образ мышления в этом случае правильный?

Спасибо заранее!

+1

Должен ли быть что-то * в * этих списках? Я ничего не вижу, чтобы поместить элементы. – user2357112

+0

- рекурсия обязательна? домашнее задание ? – PeterMmm

+0

Если это для домашней работы, вы можете найти http://stackoverflow.com/questions/354875/reversing-a-linked-list-in-java-recursive или http://stackoverflow.com/questions/12943720/reversing- a-single-linked-list-итеративно полезно. – lebolo

ответ

0

Поскольку этот вид выглядит как домашнее задание, я не собираюсь выкладывать здесь все решение, но я объясню, как вы должны концептуально это делать.

Представьте, что у вас есть 2 связанных списка. У вас есть список входных данных, который нужно отменить, и у вас есть пустой.

Если вы продолжаете принимать первый элемент от первоначального списка, и продолжайте положить, что на перед нового списка, пока ваш первоначальный список пуст, чем ваш новый список будет то, что оригинал был, кроме отмененных.

+0

Включение всего в стек, а затем появление нового списка также будет работать. Реализация оставлена ​​в качестве упражнения для читателя. – MikeTheLiar

0
public static void Reverse(Element element) 
    { 
     Element current = element; 
     Element next = current.Next; 
     Element nextToNext; 

     var first = current; 

     while (next != null && next.Next != null) 
     { 
      nextToNext = next.Next; 

      next.Next = current; 

      current = next; 

      next = nextToNext; 
     } 

     if (next != null) 
     { 
      next.Next = current; 
     } 

     first.Next = null; 
    } 
0

метод, который вы ищете уже существуют в пакете java.utils:

Collections.reverse(mylist); 

этот метод изменит порядок элемента direcly внутри списка и вам не нужно, например новый список -объект ... here вы можете найти более подробную информацию