IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Удаление элементов списка, C++
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Имеется двухсвязный список. Требуется удалить по ключу определенный элемент списка. Как удалять с середины списка у меня работает, а вот как удалить голову или хвост списка я не знаю. Вот, что делал(приведу часть программы):
Код

class List
{
    struct Element
    {
        int data;
        Element *next;
        Element *pred;
    };
    Element *head;
   public:
    List() {head=NULL;}
    ~List();
    void AddToList(int data);
    void PrintList();
    void SortList();
    void DelElement(int key);
};
void List::DelElement(int key)
{
    Element *temp1,*temp2=head;
    while(temp2->next!=NULL)
    {          if(temp2->data==key)
        {
            temp1=temp2->pred;
            temp1->next=temp2->next;
            temp2->next->pred=temp1;
            delete temp2;
            temp2=temp1;
        }
        temp2=temp2->next;
    }
}

И заодно вопрос по деструктору, правильно ли сделал(вроде работает):
Код

List::~List()
{
    while(head!=NULL)
    {
        Element *temp=head;
        head=head->next;
        delete temp;
    }
}


Сообщение отредактировано: AlonZo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
сообщение
Сообщение #2


Гость






Вот это попробуй погонять, вроде бы ничего не упустил:
void List::DelElement(int key)
{
for(Element *T = head; T; T = T-> next) {
if(T->data == key) {
if(T->prev) T->prev->next = T->next;
else head = T->next; // <--- Вот тут я накосячил, забыл next

if(T->next) T->next->prev = T->prev;

delete T; // вот тут не уверен, но вроде бы должно сработать...
}
}
}



Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Спасибо, то, что надо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.11.2021 22:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name