使用for循环在链接列表中添加数据

时间:2013-10-31 17:41:40

标签: c++ for-loop data-structures linked-list singly-linked-list

我想使用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 个答案:

答案 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;
    }
}