Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2017, 18:10   #1
artilun
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 25
По умолчанию Циклический сдвиг элементов списка

Задание: Циклический сдвиг элементов списка вправо на N позиций.
Помогите пожалуйста найти ошибку


if (!head)
{
cout << "Список пуст!" << endl;
return;
}
list *p;list *pr;
p=head;
int count=0;



while((p->next)!=NULL){

if(count>=num)
{
return;
}
pr=p;
p=p->next;

if(p->next==NULL)
{
p->next=head;
head=p;
pr->next=NULL;
count++;
}

}
artilun вне форума Ответить с цитированием
Старый 15.02.2017, 18:18   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Перейди на стр.2

Последний раз редактировалось ura_111; 15.02.2017 в 18:51.
ura_111 вне форума Ответить с цитированием
Старый 15.02.2017, 18:20   #3
artilun
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 25
По умолчанию

Первый - не кольцевой.
artilun вне форума Ответить с цитированием
Старый 15.02.2017, 18:26   #4
artilun
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 25
По умолчанию


Последний элемент присоединяем перед головой, предыдущий указывает на нулл
artilun вне форума Ответить с цитированием
Старый 15.02.2017, 18:30   #5
artilun
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 25
По умолчанию

[IMG]file:///C:/Users/home/Desktop/111.png[/IMG]
artilun вне форума Ответить с цитированием
Старый 15.02.2017, 18:39   #6
artilun
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 25
По умолчанию

Задумка вот такая
Изображения
Тип файла: jpg 111.jpg (38.0 Кб, 156 просмотров)
artilun вне форума Ответить с цитированием
Старый 15.02.2017, 18:56   #7
artilun
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 25
По умолчанию

// Добавление в начало списка
void CListRightShiftItems::addItem(int item)
{

list *newItem = new list;
newItem->key = item;
if (head == NULL)
{
head = newItem;
head->next = NULL;
}
else
{
newItem->next = head;
head = newItem;

}
}
Однонаправленный
Изображения
Тип файла: jpg 222.jpg (41.7 Кб, 88 просмотров)
artilun вне форума Ответить с цитированием
Старый 15.02.2017, 19:03   #8
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Ты всё ещё продолжаешь рисовать 2 разных списка?
У тебя две последовательности экземпляров структуры/класса?
ura_111 вне форума Ответить с цитированием
Старый 15.02.2017, 19:06   #9
artilun
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 25
По умолчанию

Один экземпляр. Изначально у меня первый вариант - простой односвязный список
Затем по ходу выполнения программы он получается замкнутым и потом в нужном месте размыкаю его.
artilun вне форума Ответить с цитированием
Старый 15.02.2017, 19:23   #10
artilun
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 25
По умолчанию

Первый вид: там где последний элемент ссылается на NULL
artilun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклический сдвиг элементов списка artilun Помощь студентам 3 12.02.2017 13:15
Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз Nekro95 Помощь студентам 12 07.11.2012 22:31
циклический сдвиг элементов массива Carter Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2011 19:54
Не получается циклический сдвиг элементов списка влево Джиксер Общие вопросы C/C++ 5 02.06.2010 23:38