我試圖將項目添加到列表的前面。基本上,我在這裏要做的是:C++以可能的清潔程序將項目添加到鏈接列表
從空列表開始;
閱讀數字;
調用函數,其中創建新節點以存儲該號碼,並且下一個指針指向空;
如果該列表是空的,那麼這個新的節點列表(也是唯一元素)
如果有更多的元素,那麼這個新的節點指向列表的頭部,成爲年初新的頭。
我的功能做什麼,我想要的(至少我可以看到,在調試器),但它返回後,我的列表是空的並且頭爲null一次。
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;
}
我使用OOP,模板的typedef,等等,儘可能得到一個「乾淨」的代碼,所以我有意避免可以理解一切如何運作。
你傳入指針的副本列表。修改副本不會修改原始變量。通過引用傳遞指針。 –