2017-03-08 88 views
-1

這是我的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

解決這些問題的正確工具是你的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,您應該\編輯您的問題,以包含一個[最小,完整和可驗證](http://stackoverflow.com/help/mcve)示例,該示例再現了您的問題,以及您在調試器。 –

+0

請正確格式化您的代碼(就像您C++文本中的示例一樣)。 –

回答

0

您需要更新head這是從來沒有從最初NULL改變,因爲if(head!=NULL)條件檢查。

變化

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

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

謝謝。它工作:) –

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

主程序頭是空,因此在插入功能它永遠不會因爲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; 
} 
+0

請給出正確的版本 –

+0

@BhargabKakati,你可以嘗試實施張貼到你的原始問題的建議,看看它是否能解決你的問題。 – Rishi

+0

回答時,請至少正確格式化您的代碼。 –