Я пытаюсь добавить элементы в начало списка. В основном, я пытаюсь сделать здесь:C++ Добавить элементы в список со всеми возможными способами
Начните с нулевого списка;
Считать номер;
Функция вызова, в которой создается новый узел для хранения номера, а следующий указатель указывает на нуль;
Если список пуст, то этот новый узел в начале списка (и единственного элемент)
Если есть несколько элементов, то эти новые узловые точек к главе списка и становится новый руководитель.
Моя функция делает то, что я хочу (по крайней мере, я могу видеть, что в отладчике), но после того, как он возвращает мой список пуст, и голова нуль снова.
struct node{
int data;
node *next;
};
void insert_front(node *list, int num){
node * newnode = new (node);
newnode->data = num;
newnode->next = nullptr;
if (list == nullptr)
list = newnode;
else{
newnode->next = list;
list = newnode;
}
}
int main()
{
int n;
node *head = nullptr;
cout << "Input numbers to store (0 finishes input): ";
cin >> n;
while (n != 0){
insert_front(head, n);
cin >> n;
}
return 0;
}
попытался Также это, но он даже не компилируется:
void insert_front(node &lst, int num){
node *newnode = new node();
newnode->data=num;
newnode->next=lst;
lst=newnode;
}
я намеренно избегал использовать ООП, шаблоны, ЬурейиЕ и т.д. как можно больше, чтобы получить «чистую» коду, так что я может понять, как все работает.
Вы передаете копию указателя в списке. Изменение копии не изменяет исходную переменную. Передайте указатель по ссылке. –