gpt4 book ai didi

c++ - 打印链表元素

转载 作者:行者123 更新时间:2023-11-28 00:32:42 25 4
gpt4 key购买 nike

我写了一个递归添加元素的程序,然后打印出元素。问题是,程序只打印出列表中的第一个元素。我试图解决这个问题,但我不知道问题出在哪里......

#include <iostream>

using namespace std;

struct list
{
int value;
list* next;
};

list* addNewElement(list* p_head, int elems)
{
if (elems >= 1)
{
list* p_list = new list;

cout << "Enter a value: ";
cin >> p_list->value;

p_list->next = p_head;

addNewElement(p_head, elems - 1);

return p_list;
}
}

void printList(list* p_head)
{
list* p_cur = p_head;

cout << "ELEMENTS: " << endl;

while (p_cur != NULL)
{
cout << p_cur->value;
p_cur = p_cur->next;
}

cout << endl;
}

int main()
{
list* p_head = NULL;

int elemNR;

cout << "Enter how many elements do you want in the list: ";
cin >> elemNR;

p_head = addNewElement(p_head, elemNR);

cout << endl;

printList(p_head);

cout << endl;

cout << "PRESS <ENTER> TO CONTINUE...";

cin.ignore();
cin.get();
}

最佳答案

问题是在所有迭代之后您有很多列表对象,其中 next 指针指向 NULL。您应该将 addNewElement 方法修改为如下所示:

list* addNewElement(list* p_head, int elems) {
if (elems >= 1) {
list* p_list = new list;

cout << "Enter a value: ";
cin >> p_list->value;

p_list->next = addNewElement(p_head, elems - 1);
return p_list;
}
return p_head;
}

发生了什么变化? p_list->next 指针被设置为下一个列表元素的开头而不是 NULL ;)

编辑:这是工作代码:http://ideone.com/oJ8kX7

关于c++ - 打印链表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22205736/

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