Есть код:
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
Вот примерный набросок - простите уж за отсутствие художественного таланта :) Видите? разорвали связь и воткнули туда новый элемент...
Комментариев нет:
Отправить комментарий