无法显示链接列表的值?

时间:2017-03-08 07:58:50

标签: c++ pointers linked-list iterator insertion

这是我的C ++程序,用于在链表的开头插入值。该程序的逻辑似乎对我来说没问题,但它无法显示列表的值。我想问题出在Print()函数中。请帮忙!

#include<iostream.h>

struct Node
{
  int data;
  Node* next;
};
struct Node* head;
void Insert(int x)
{
  Node *temp=new Node();
  temp ->data=x;
  temp ->next=NULL;
  if(head!=NULL)
  {
    temp->next=head;
    head=temp;
  }
}
void Print()
{
  Node *temp=head;
  cout<<"List is:";
  do
  {
    cout<<temp->data<<"->";
    temp=temp->next;
  }while(temp!=NULL);
  cout<<endl;
}
int main()
{

  int n,i,x;
  head=NULL;
  cout<<"How many numbers \n";
  cin>>n;
  for(i=0;i<n;i++)
  {
    cout<<"Enter the number \n";
    cin>>x;
    Insert(x);
    Print();
  }
  return 0;
}

2 个答案:

答案 0 :(得分:2)

void Insert(int x)
{
Node *temp=new Node();
temp ->data=x;
temp ->next=NULL;
if(head!=NULL)
{
temp->next=head;
head=temp;
}
}
主程序头中的

为null,因此在插入函数中,由于if(head!=NULL)检查,它永远不会更新。

正确的解决方案是

#include<iostream>
using namespace std;
struct Node
{
 int data;
 Node* next;
};
struct Node* head;
void Insert(int x)
{
Node *temp=new Node();
temp ->data=x;
temp ->next=NULL;
if(temp!=NULL)
{
temp->next=head;
head=temp;
}
}
void Print()
{
 Node *temp=head;
 cout<<"List is:";
 do
 {
 cout<<temp->data<<"->";
 temp=temp->next;
 }while(temp!=NULL);
 cout<<endl;
}
int main()
{

int n,i,x;
head=NULL;
cout<<"How many numbers \n";
cin>>n;
for(i=0;i<n;i++)
{
 cout<<"Enter the number \n";
 cin>>x;
 Insert(x);

}
 Print();
return 0;
}

答案 1 :(得分:0)

由于head条件检查,您需要更新NULL从未从初始if(head!=NULL)更改的内容。

更改

    if(head!=NULL)
    {
        temp->next=head;
        head=temp;
    }

    if(head!=NULL)
    {
        temp->next=head;
    }
    head=temp;