Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
t1maaa
4 / 4 / 0
Регистрация: 07.01.2011
Сообщений: 15
#1

Линейный двусвязный список - C++

18.05.2011, 15:28. Просмотров 1269. Ответов 3
Метки нет (Все метки)

Список задан структурой
C++
1
2
3
4
5
6
struct *node
{
char info;
node *prev;
node *next;
};
и была введена некоторая последовательность чисел. Нужно расположить элементы списка в обратном порядке не применяя копирования.
Натолкните на мысль или примерный алгоритм подскажите)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2011, 15:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Линейный двусвязный список (C++):

Линейный двусвязный список - C++
Тип элемента списка определен так: struct llist{ int val; llist *next,*pred;}; //Создаётся статический список из 3 эл-тов ...

Линейный Двусвязный список! - C++
Задание:Создайте шаблон функции, которая удаляет из данного списка все элементы, не удовлетворяющие предикату (указатель на функцию,...

Двусвязный линейный список - C++
Здравствуйте. Помогите пожалуйста в написании программы: Реализовать класс на основе двусвязного линейного списока Реализовать в нем...

Двусвязный линейный список - C++
Мне нужно написать класс двусвязный список со всеми базовыми методами. У меня есть несколько проблем: во-первых, удаление из хвоста...

Двусвязный линейный список - C++
Дан Двусвязный линейный список. ну например фамилия и имя. как сделать добавление в начало списка? и как объявлять его? помогите

Двусвязный линейный список - C++
Помогите пожалуйста написать эти программы :( Двусвязный линейный список, Быстрая сортировка ,Пузырьковая с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
18.05.2011, 16:02 #2
У каждой ноды надо swap(prev, next), соответственно, последний элемент станет первым, первый -- последним.
1
t1maaa
4 / 4 / 0
Регистрация: 07.01.2011
Сообщений: 15
18.05.2011, 20:42  [ТС] #3
За swap спасибо.
как грамотно поменять указатели до меня так не дошло, зато появилась мысль просто поля info менять. На начало(top) и конец(tail) ставиться по указателю, обмениваются info полями, через вспомогательные указатели(k,t) и движутся навстречу друг другу. Сначала обмен происходит нормально, но когда меняются рядомстоящие центральные элементы(если четное число элементов) либо оба указателя на центральном элементе(при нечетном), указатель движущийся с конца(tail) теряется..

C++
1
2
3
4
5
6
7
8
9
   while (top->next!=tail || tail->prev!=top || top!=tail || right!=NULL || top!=NULL)
  {
      k=top;
      t=tail;
      top=top->next;
      tail=tail->prev;
      swap(k->info,t->info);
      
  }
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
18.05.2011, 22:22 #4
Вот как-то так.
C++
1
2
3
4
5
6
7
node *pointer = top; // первый элемент
while (pointer != NULL) {
  node *next = pointer->next; // запомним следующий элемент
  swap(pointer->prev, pointer->next); // поменяем местами следующее и предыдущее значение
  pointer = next; // следующий элемент
}
swap(top, tail); // ну и поменять местами хвост и голову.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2011, 22:22
Привет! Вот еще темы с ответами:

Линейный двусвязный список - C++
Задали задачу, реализовать линейный двусвязный список, и функцию к нему - удаление узла. Читал литературу, правда в спешке, искал по форуму...

Сформировать линейный двусвязный список - C++
Сформировать линейный двусвязный список следующим образом: генерируется два случайных числа, если такие числа уже есть в списке, то они из...

Линейный двусвязный список для хранения записей - C++
Добрый вечер. Нужна блок-схема к данному коду #include "stdafx.h" #include <iostream> //директива для ввода вывода #include...

Вставить в линейный список перед элементом с заданным значением другой линейный список - C++
Как можно вставить в линейный список перед элементом с заданным значением другой линейный список? Как один элемент вставлять, я знаю, а вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.05.2011, 22:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru