链接列表insert()print();

时间:2015-04-12 03:23:21

标签: c++ list printing insert

我是初学者,我已创建链接列表,但我的代码无法正常工作。请提前帮助

#include <iostream>
using namespace ::std;

class node{
public:

    int data;
    node *link;
};


class linklist{
private:
    node *head=NULL;
    node *tail;
    node *temp;
public:
    // I think there is some issue but it seems perfect to me plz help 
    void insert(int n)
    {

        if(head==NULL)
        {
        tail=new node;
        tail->data=n;
        tail->link=NULL;
        head=tail;
        temp=tail;

        }
        else
        {
            tail=new node;
            tail->data=n;
            tail->link=NULL;
            temp->link=tail;


        }
    }
    void print()
    {
        while(head->link==NULL)
        {
            cout<<head->data<<endl;
            head=head->link;
        }

    }

};

int main() {
    linklist s;
    cout<<"how many numbers you want to enter"<<endl;
    int n,l;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cout<<"enter nummber";

        cin>>l;
        s.insert(l);
        s.print();
    }

   }

打印部分打印后没有进行打印并保持打印当前元素

1 个答案:

答案 0 :(得分:0)

您的代码中存在一些错误。

    每次
  1. print函数更改head值,您需要使用局部变量。你while循环的条件也是错误的。

    void print()
    {
       node* t = head;
       while(t->link!=NULL)
       {
          cout<<t->data<<endl;
          t=t->link;
       }
    }
    
  2. 添加新节点时,您不会更改temp

    else
    {
        tail=new node;
        tail->data=n;
        tail->link=NULL;
        temp->link=tail;
        temp = tail; // here
    }