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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2013, 19:34   #11
FleXt
Пользователь
 
Регистрация: 01.12.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Побежал за телепатором....
Извиняюсь... вот ошибка "no match for 'operator=' in 'tail = ch' "
FleXt вне форума Ответить с цитированием
Старый 16.02.2013, 20:21   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может я забыл перед tail звездочку поставить, когда описывал его выше...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.02.2013, 20:27   #13
FleXt
Пользователь
 
Регистрация: 01.12.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Может я забыл перед tail звездочку поставить, когда описывал его выше...
Я исправил, программа компилируется, но при запуске аварийно завершается, без сообщение об ошибке, думаю это из-за условия продолжения цикла, список является циклическим

Последний раз редактировалось FleXt; 16.02.2013 в 20:32.
FleXt вне форума Ответить с цитированием
Старый 16.02.2013, 20:45   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да пожалуй тебе в условие нужно добавить еще и проверку типа ch!=head.
Дабы он на последнем элементе закончил цикл.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2013, 06:52   #15
FleXt
Пользователь
 
Регистрация: 01.12.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Да пожалуй тебе в условие нужно добавить еще и проверку типа ch!=head.
Дабы он на последнем элементе закончил цикл.
Но ведь изначально ch=head , тогда нужно делать do { } while();
переделав так, все равно получается, что программа "зацикливается"

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ага. Тогда я бы писал так:
Код:
 if (head->data == tail->data)
Т.е. после удаления не производить переход на следующий элемент. Поскольку уже после удаления сам список изменился.
разве вот тут не надо сравнивать первый элемент с предпоследним, а не с последним, ведь соседями последнего элемента являются предпоследний и последний?

Последний раз редактировалось Stilet; 17.02.2013 в 11:15.
FleXt вне форума Ответить с цитированием
Старый 17.02.2013, 11:31   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
разве вот тут не надо сравнивать первый элемент с предпоследним
Согласен. Упустил.
Тогда и сам цикл нужно не до последнего а до предпоследнего. Или начинать цикл со второго элемента.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2013, 12:33   #17
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Код:
template <class T>
void List<T>::remove(int id)
{
  Ob<T> object = find(id);
  if(!object)  return;
  if(object->prior) // Удаляем не первый элемент
  {
     object->prior->next = object->next;
     if(object->next) // Удаляем не последний элемент
        object->next->prior = object->prior;
     else // удаляем поледний
       end = object->prior; // обновление указателя конца.
  }
  else // Удаляем первый элемент
  {
     if(object->next) // список не пуст
     {
        object->next->prior = NULL;
        start = object->next; // обновление указателя начала
     }
     else // Всего один элемент
       start = end = NULL;
  }
}
___
Добавь своё условие, какое тебе надо и всё.
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 17.02.2013 в 12:36.
Perchik71 вне форума Ответить с цитированием
Старый 17.02.2013, 18:51   #18
FleXt
Пользователь
 
Регистрация: 01.12.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Perchik71 Посмотреть сообщение
Код:
template <class T>
void List<T>::remove(int id)
{
  Ob<T> object = find(id);
  if(!object)  return;
  if(object->prior) // Удаляем не первый элемент
  {
     object->prior->next = object->next;
     if(object->next) // Удаляем не последний элемент
        object->next->prior = object->prior;
     else // удаляем поледний
       end = object->prior; // обновление указателя конца.
  }
  else // Удаляем первый элемент
  {
     if(object->next) // список не пуст
     {
        object->next->prior = NULL;
        start = object->next; // обновление указателя начала
     }
     else // Всего один элемент
       start = end = NULL;
  }
}
___
Добавь своё условие, какое тебе надо и всё.
нельзя классами пользоваться=(
FleXt вне форума Ответить с цитированием
Старый 17.02.2013, 18:52   #19
FleXt
Пользователь
 
Регистрация: 01.12.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Согласен. Упустил.
Тогда и сам цикл нужно не до последнего а до предпоследнего. Или начинать цикл со второго элемента.
Не могли бы Вы показать, что именно надо исправить, а то у меня все равно не работает? компилируется, но аварийно завершает

Последний раз редактировалось FleXt; 17.02.2013 в 18:56.
FleXt вне форума Ответить с цитированием
Старый 17.02.2013, 19:43   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Давай полностью текст программы. Как и откуда список берется.
P.S. Я бы STL использовал для этого.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двусвязный список в C++. ЕвгенийЕрмак Помощь студентам 0 03.05.2012 20:21
Двусвязный список(C++) fable0097 Помощь студентам 0 16.05.2011 16:03
Двусвязный список decantnik Паскаль, Turbo Pascal, PascalABC.NET 0 09.05.2011 00:58
двусвязный список Olezhka Помощь студентам 1 23.03.2011 11:00
двусвязный список klykovka Помощь студентам 8 22.05.2010 18:58