Реверсивный односвязный список? - PullRequest
0 голосов
/ 21 августа 2011

На разных сайтах я искал программу в java, делающую в обратном порядке порядок связанного списка (односвязный список и двусвязный список). Я попал на разные сайты, такие как

1) http://geek-o-pedia.blogspot.com/2007/07/how-would-you-reverse-singly-linked.html 2) /350176/reversivnyi-svyazannyi-spisok-v-java

PointA - Насколько я понимаю, эти программы (взять ссылку 1) хороши, когдавы пишете свой связанный список классов, так как программа предполагает, что мы можем получить доступ к классу Node, который мы не можем (так как он является закрытым внутренним классом в связанном списке.)

Точка B-Помимо того, что эта программа навсегда перевернетсяпорядок связанного списка источников.Поэтому, когда мы повторяем это, мы всегда получим элементы в обратном порядке.

Пожалуйста, дайте мне знать, если оба вышеуказанных пункта верны

Поэтому я попытался сделать это сам

- Изменение единственного связанного списка

LinkedList list1 = new LinkedList();
    list1.add(1);
    list1.add(2);
    list1.add(3);
    list1.add(4);
    list1.add(5);

LinkedList reverseList1 = new LinkedList();

int size= list1.size();

// below loop will revrse the order of source linked list i.e list1

for(int i =size-1;i>=0;i--)
{
reverseList1.add(size-i-1, list1.get(i));
}

Просто хотел убедиться, что вышеприведенный подход верен, поскольку я не мог найти этот подход в Интернете, который я нашел очень простым. Везде я мог найти подход, аналогичныйссылка1 и ссылка2

также опубликованы по адресу https://forums.oracle.com/forums/thread.jspa?threadID=2271413&tstart=0, но не получили правильного ответа.

Ответы [ 2 ]

1 голос
/ 21 августа 2011

Кажется, что это будет работать нормально.Тем не менее, нет необходимости в 1-м параметре для метода add - добавьте уже вставки в конце (и вы также можете использовать addLast, который идентичен).

Также, используя get(i)это много раз не эффективно.Я бы перебрал первый список (с foreach или итератором -, и для каждого элемента вызовите addFirst.

В качестве альтернативы используйте Collections.reverse, как предложил panzerschreck, что действительно является лучшим способом IMO.

1 голос
/ 21 августа 2011

Вы пробовали использовать что-нибудь из этого?

Collections.sort(list, Collections.reverseOrder(cmp));
or
Collections.reverse(list);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...