Страницы

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

четверг, 4 апреля 2019 г.

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

Есть код:
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)
Объясните, пожалуйста.


Ответ

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

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

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