Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление из 1-связ.-списка 
V
    Опции темы
Avaj
Дата 27.10.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 14.7.2008
Где: Владивосток.

Репутация: 1
Всего: 3



не работает ф-ция, кто подскажет - почему?

Код


struct node{
        node *next;
        string key;
} *a[n], *head[n];

bool del(unsigned h, string str){
    bool res = false;
    node *elem = search(h,str), *prev = a[h];//   a[h] - первый элемент списка, head[h] - последний
    if(elem){
        res = true;
        if(elem == a[h]) a[h] = elem->next;
        else if(elem == head[h]){
            while(prev->next != head[h]) prev = prev->next;
            head[h] = prev;
            head[h]->next = 0;
        }
        else{
            while(prev->next != elem) prev = prev->next;
            prev->next = elem->next;
        }
    }
    delete elem;
    delete prev;    
    return res;
}


Оно компилится, но вылетает.

Это сообщение отредактировал(а) Avaj - 27.10.2008, 17:15
PM MAIL   Вверх
mes
Дата 27.10.2008, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Avaj @  27.10.2008,  17:14 Найти цитируемый пост)
    delete elem;
    delete prev;    

ничего не смущает ? 


--------------------
PM MAIL WWW   Вверх
Avaj
Дата 27.10.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 14.7.2008
Где: Владивосток.

Репутация: 1
Всего: 3



а что не так?
PM MAIL   Вверх
mes
Дата 27.10.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Avaj @  27.10.2008,  17:34 Найти цитируемый пост)
а что не так? 

del должна удалить один элемент, а в коде два delete. 
 Учитывая что на момент встречи оператора delete оба указателя (elem и prev)  указывают на один и тот же элемент, то код пытается дважды удалить один и тот же объект. 


--------------------
PM MAIL WWW   Вверх
Avaj
Дата 27.10.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 14.7.2008
Где: Владивосток.

Репутация: 1
Всего: 3



Спасибо, mes. Но есть ещё какие-то ошибки.

Есть ли у кого рабочая функция удаления элемента по ключу из 1-связ.-списка?
PM MAIL   Вверх
mes
Дата 27.10.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Avaj @  27.10.2008,  17:52 Найти цитируемый пост)
Но есть ещё какие-то ошибки.


Цитата(Avaj @  27.10.2008,  17:14 Найти цитируемый пост)
        if(elem == a[h]) a[h] = elem->next;
        else if(elem == head[h]){

эта связка не коректно сработает для 1 элемента,
также отсутствует проверка на пустоту списка..




--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.