Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Связный список, оператор -> (С++)

#cpp #visual_studio #список #односвязный_список


Есть код:

struct Element      //структура задающая элемент односвязного списка
{
    int data;       //информационное поле для хранения данных
    Element *next;  //указатель на следующий элемент
} *start, *current;

void create_list(int a)
{
    current = new Element;
    current->data = a;
    current->next = NULL;
    start = current;
}

void new_element(int a)
{
    Element *q;
    q = new Element;
    q->data = a;
    q->next = current->next;
    current->next = q;
}

void delete_element(int a)
{
    while (current->data != a)
    {
        current = current->next;
        if (current->data == a)
        {
            delete current;
        }
    }
}


Не совсем понял, что происходит в этих строчках:

current->next = NULL;


функции create_list(int)

и

q->data = a;
q->next = current->next;
current->next = q;


функции new_element(int)

Объясните, пожалуйста.
    


Ответы

Ответ 1



Первый - current->next = NULL; просто устанавливает элемент, на который указывает current, последним в списке - за ним (next) ничего нет. q->data = a; q->next = current->next; current->next = q; Это просто вставляет элемент после current - теперь новый элемент q указывает туда же, куда раньше указывал элемент, на который указывал current, а он теперь указывает на q. Вот примерный набросок - простите уж за отсутствие художественного таланта :) Видите? разорвали связь и воткнули туда новый элемент...

Комментариев нет:

Отправить комментарий