Допустим, у меня есть список, как, например:Понимание добавление к фронту связного списка
[1]-> [2]-> [3]-> [4]-> [5]->NULL
Если значение 1 является голова, и 5 есть хвост. Я следую пример кода, показанный здесь: https://codereview.stackexchange.com/questions/29784/reversing-a-linked-list-and-adding-removing-nodes
То, что я не понимаю, эта линия (В функции addtoFront)
ptr->value = input;
ptr->next = head; // Point next value to the previous head
head = ptr;
Вот что я получаю. ptr->value = input
эта строка инициализирует узел, называемый указатель с заданным значением
`ptr->next = head;`
эта строка задает следующий указатель нового элемента (вставляются спереди), к предыдущей головке, таким образом, мы есть что-то вроде этого:
Insert [9] к передней, так:
[9] (new head points to old head)
[9] -> [1] (9's next pointer points to 1)
То, что я не получаю эту строку:
head = ptr;
Читая это смущает меня в том смысле, что я интерпретируя его как установка двух узлов равны друг другу, то есть [1] становится [9], поэтому у нас есть 2 узлов, которые являются [9], [9]->[9]->[2]->[3]->[4]->[5]->NULL
но это явно нет.
Как-то их нет обозначение стрелки ->
, я, кажется, теряюсь в том, что происходит точно (для большинства присутствующих функций). Любая помощь приветствуется!
'head' всегда указывает на первый узел, поэтому, когда вы вставляете новый первый узел, вам нужно сделать головную точку. –