Нет, вы не можете.Проблема с insert1
заключается в следующей строке:
l = p;
Это установит значение l
в p
, но l
является только локальной функцией-переменной, содержащей значениеуказатель на список.Изменение l
здесь не будет иметь никакого эффекта вне функции.Поэтому, если у меня есть код вроде:
list *myList = /* ... */;
insert1(myList, 0);
Указатель myList
здесь не будет изменен.С другой стороны, с кодом:
list *myList = /* ... */;
insert(&myList, 0);
Указатель myList
будет обновлен, чтобы указывать на вновь вставленное значение.