2017-03-08 5 views
-1

Voici mon programme C++ qui est utilisé pour insérer des valeurs au début de la liste chaînée. La logique du programme semble bien pour moi mais elle est incapable d'afficher les valeurs de la liste. Je suppose que le problème est dans la fonction Print(). S'il vous plaît aider!Impossible d'afficher les valeurs de la liste liée?

#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

L'outil pour résoudre de tels problèmes est votre débogueur. Vous devez parcourir votre code ligne par ligne * avant * de demander Stack Overflow. Pour plus d'aide, veuillez lire [Comment déboguer de petits programmes (par Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Au minimum, vous devriez [modifier] votre question pour inclure un exemple [Minimal, Complet et Vérifiable] (http://stackoverflow.com/help/mcve) qui reproduit votre problème, ainsi que les observations que vous avez faites dans le débogueur. –

+0

Veuillez formater votre code correctement (tout comme les exemples dans votre livre de texte C++). –

Répondre

0

Vous devez mettre à jour head qui n'a jamais changé de départ NULL en raison de if(head!=NULL) vérification de l'état.

changement

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

à

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

Merci. Cela a fonctionné :) –

2
void Insert(int x) 
{ 
Node *temp=new Node(); 
temp ->data=x; 
temp ->next=NULL; 
if(head!=NULL) 
{ 
temp->next=head; 
head=temp; 
} 
} 

en tête principale du programme est nul donc en fonction d'insertion ne sera jamais mise à jour à cause de if(head!=NULL) chèque.

Solution correcte est

#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; 
} 
+0

s'il vous plaît donner la version corrigée –

+0

@BhargabKakati, vous pouvez essayer de mettre en œuvre la suggestion postée à votre problème d'origine et voir si elle résout votre problème. – Rishi

+0

En répondant, s'il vous plaît formater votre code correctement au moins. –