C++ 循环添加结构体,结构体重复
struct ListNode
{
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
int main(){
ListNode node1;
node1.val = 1;
node1.next = nullptr;
ListNode *head = &node1;
ListNode *p = head;
for (int i = 2; i < 6; i++)
{
// new 创建的结构体指针 每次都是一个新的结构体
ListNode *node = new ListNode();
node->val = i;
node->next = nullptr;
p->next = node;
// 这样添加节点,使得每个添加的节点值都为最后一次的值,并未每次循环有一个副本,是同一个结构体
// ListNode node;
// node.val = i;
// node.next = nullptr;
// p->next = &node;
p = p->next;
}
p = head;
while (p != nullptr)
{
cout << p->val << endl;
p = p->next;
}
cout << endl;
return 0;
}