来自C ++初学者的问题...因为我想在我的链接列表中打印所有元素,但是代码我只打印了第一个元素。有任何想法吗??谢谢 !!这是我的代码(感谢任何帮助):
#include <iostream>
#include <string>
using namespace std;
struct Entry{
string name,phone;
Entry *next;
};
void PrintEntry(Entry *e)
{
cout<< e->name << " " << e->phone <<endl;
}
Entry *GetNewEntry()
{
string name;
cout<< "Enter name (ENTER to quit): ";
getline(cin,name);
if(name == "") return NULL;
Entry *newOne = new Entry;
newOne->name = name;
cout<< "Enter phone: ";
getline(cin, newOne->phone);
newOne->next= NULL;
return newOne;
}
Entry * Buildlist()
{
Entry *list=NULL;
while(true){
Entry *newOne=GetNewEntry();
if (newOne == NULL) break;
newOne->next = list;
list = newOne;
}
return list;
}
int main()
{
Entry *n=Buildlist();
PrintEntry(n);
return 0;
}
答案 0 :(得分:0)
void PrintAll(Entry *e)
{
for(;e;e = e->next)
PrintEntry(e)
}
答案 1 :(得分:0)
您的代码存在一些问题。这里有一些提示......
在进行赋值时,在BuildList()函数中:
list = newOne;
您只是将“最后”条目保存到列表中。所有以前的条目都是孤立的。
声明:
newOne-&gt; next = list;
真的什么都不做......简单的NULL终止newOne-&gt; next(因为'list'仍然是NULL)。此字段已从先前的GetNewEntry()调用设置为NULL。
您的代码的根本问题在于,您实际上并未将每个新创建的节点相互链接,而只保留带有列表的最后一个节点。修复后,需要在循环中调用PrintEntry(),遍历列表以打印每个元素。