4

我想使用 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;
}

这个程序有什么问题??

4

4 回答 4

4

正是这个循环是错误的

temp=start;
while(temp->next!=NULL)
{
    cout<<start->data<<"  ";
    temp=temp->next;
}

按以下方式更改

for ( temp = start; temp; temp = temp->next ) cout << temp->data << ' ';

或者如果你想使用 while-loop 那么

temp = start;
while ( temp )
{
    cout << temp->data << '  ';
    temp = temp->next;
}

另外,我接下来会使用 name 而不是 name temp。例如

for ( NODE *next = start; next; next = next->next ) cout << next->data << ' ';
于 2013-10-31T17:47:41.047 回答
2

您每次都在打印第一个(开始)节点。

你应该改变:

cout<<start->data<<"  ";

到:

cout<<temp->data<<"  ";
      ^^^^
于 2013-10-31T17:43:52.543 回答
0

因为您正在打印“开始->数据”而不是临时->数据

于 2013-10-31T17:55:07.697 回答
0

如果我们添加此代码,您只显示 i ypu 中的 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;
    }
}
于 2014-06-10T04:51:38.347 回答