我想使用for循环将数据添加到链接列表中。 我期待的是1 2 3 4 5 6 7 8 9 10 O / P我得到的是1 1 1 1 1 1 1 1 1 1
#include <iostream>
using namespace std;
struct NODE
{
int data;
NODE *next;
};
int main()
{
int i,j=0;
NODE *start=NULL,*ptr,*temp;
for (i=1;i<=10;i++)
{
ptr = new NODE;
ptr->data=i;
ptr->next=NULL;
if(start==NULL)
start=ptr;
else
{
temp=start;
while(temp->next!=NULL)
temp=temp->next;
temp->next=ptr;
}
}
temp=start;
while(temp->next!=NULL)
{
cout<<start->data<<" ";
temp=temp->next;
}
return 0;
}
这个程序出了什么问题?
答案 0 :(得分:3)
这个循环是错误的
temp=start;
while(temp->next!=NULL)
{
cout<<start->data<<" ";
temp=temp->next;
}
按以下方式更改
for ( temp = start; temp; temp = temp->next ) cout << temp->data << ' ';
或者如果你想使用while循环那么
temp = start;
while ( temp )
{
cout << temp->data << ' ';
temp = temp->next;
}
而不是名称temp我会使用下一个名字。例如
for ( NODE *next = start; next; next = next->next ) cout << next->data << ' ';
答案 1 :(得分:2)
您每次都打印第一个(开始)节点。
你应该改变:
cout<<start->data<<" ";
为:
cout<<temp->data<<" ";
^^^^
答案 2 :(得分:0)
因为您正在打印“start-&gt; data”而不是temp-&gt; data
答案 3 :(得分:0)
你只显示1 如果我们添加此代码,您就不会从用户插入数据,那么我们就可以从用户那里获取数据
for (i=1;i<=5;i++)
{
ptr = new NODE;
cout<<"enter data";
cin>>data;
ptr->data=data;
ptr->next=NULL;
if(start==NULL)
start=ptr;
else
{
temp=start;
while(temp->next!=NULL)
temp=temp->next;
temp->next=ptr;
}
}