2 / 2 / 1
Регистрация: 08.03.2019
Сообщений: 61
1

Нужно исправить метод удаления узла из односвязного списка по параметру

02.07.2019, 00:11. Показов 318. Ответов 1
Метки нет (Все метки)

Помогите,пожалуйста!Срочно надо.
Есть метод,который должен удалять узел в списке по указываемому параметру,в данном случае,параметр представляет собой строку(название),который получаем через метод GetPhoneName()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int List<T>::DeleteByName(char* Name)
{
    Node<T>* current = head;
    //Node<T>* p;
    if (current != NULL)
    {
        while (current!= NULL)
        {
            if (! strcmp(current->data->GetPhoneName(), Name))
                {
                    head = current->next;
                    free(current);
                    return 1;
                }
                if (Name == current->data->GetPhoneName())
                {
                    while(current!= NULL)
                    {
                        current->next = current->next->next;
                    }
                    free(current);
                    return 1;
                }
        }
    }
    return 0;
}
Программа удаляет узел,если он находится в начале и имя в этом узле совпадает с введённым.А вот дальше уже не работает. Вылетает программа. Не работает часть,начиная с 15 строки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2019, 00:11
Ответы с готовыми решениями:

Удаление узла из односвязного списка по заданному параметру
Имеется: программа для добавления данных студента/ов, распечатывание его/их данных. Нужно написать...

Реализация, удаления и вставки узла в середину односвязного списка
Доброго времени суток форумчане, на днях делая задание столкнулся с проблемой которая присутствует...

Шаблон для узла односвязного списка
Есть узел typedef struct Var { String varname; int value; struct Var *next; }...

Удаление узла из односвязного списка. + Сортировка
Уважаемые, форумчане! Помогите разобраться с работой функции void DeleteNodeByIndex(NODE *head,int...

1
817 / 504 / 211
Регистрация: 19.01.2019
Сообщений: 1,196
02.07.2019, 02:24 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int List<T>::DeleteByName(char* Name)
{
    Node<T>* current = head;
    Node<T>* prev;
 
    while (current != NULL && strcmp(current->data->GetPhoneName(), Name) != 0) {
        prev = current;
        current = current->next;
    }
 
    if (current == NULL) {
        return 0;
    }
 
    if (current == head) {
        head = head->next;
    }
    else {
        prev->next = current->next;
    }
    free(current);
    return 1;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2019, 02:24
Помогаю со студенческими работами здесь

Организовать добавление узла в конец односвязного списка
1. Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и...

Добавление нового узла между последним и предпоследним узлами односвязного списка
Ребят, помогите с написанием программы, заранее спасибо)

Удаления элемента из односвязного списка
Помогите, пожалуйста! Есть односвязный список. Нужно написать функцию, которая удаляет элемент...

Функция удаления элемента односвязного списка
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; struct A { int key; };


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru