gpt4 book ai didi

c++追加到链表

转载 作者:太空狗 更新时间:2023-10-29 23:32:29 26 4
gpt4 key购买 nike

我正在编写一段代码将一个节点追加到单链表的末尾,但它似乎根本没有追加任何东西。谁能告诉我我做错了什么?

#include<iostream>
using namespace std;

struct Node{
int val;
Node* next;
Node(int v) : val(v), next(NULL) {}
};

void append(Node &head, int d){
Node n = head;
while(n.next != NULL){
n = *n.next;
}
Node end(d);
n.next = &end;
}

int main(){
Node head(0);
for(int i=1;i<5;i++){
append(head, i);
}
Node n = head;
while(n.next != NULL){ //print the linked list, result is 0
cout << n.val<<" ";
n = *n.next;
}
cout<<n.val<<endl;
return 0;
}

编辑:我更改了 append() 方法以每次附加一个动态分配的节点,但它仍然不起作用。

void append(Node &head, int d){
Node n = head;
while(n.next != NULL){
n = *n.next;
}
Node* end = new Node(d);
n.next = end;
}

最佳答案

您将 local 对象 Node end(d); 附加到链表的末尾。此对象在 append 存在时被销毁,最后一个列表元素指向一个不存在的对象。

关于c++追加到链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38523180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com