2016-03-24 145 views
0

晚上好!我正在嘗試創建一個C++鏈接列表,它將在100個節點中創建一個隨機數&商店隨機數。我在創建的代碼中沒有得到任何錯誤,但是當我運行該程序時,輸出將數字「42」循環到必須終止程序的位置。請幫忙。代碼如下。正確地將節點插入鏈接列表C++

#include <iostream> 
#include <stdlib.h> 
using namespace std; 

struct Node{ 
    int xdata; 
    Node* next; 
}; 
struct Node *head; 
void insert_node(int y) 
{ 

    Node* temp = new Node; 
    temp-> xdata = y; 
    temp-> next = NULL; 
    if(head==NULL) 
    { 
     head=temp; 
    } 
    else{ 
     temp->next=head; 
     head=temp; 
    } 
}; 
int main(){ 
int z =rand()%100 + 1; 
for(int i=0; i<100; i++) 
{ 
    insert_node(z); 
} 
while(head!=NULL) 
{ 
    cout<<head->xdata<<" "<<endl; 
} 
return 0; 
} 
+0

檢查再次打印的循環,它在'head'不是'NULL'的時候迭代,以及'head'什麼時候變成NULL?使用另一個已初始化的變量指向'head'指向什麼,並在循環中重新指派它以指向列表中的下一個節點。 –

+0

生命,宇宙和一切的答案! –

+0

我明白我錯過了什麼,謝謝一堆。 –

回答

1

你需要提前你的頭指針。

while(head!=NULL) 
{ 
    cout<<head->xdata<<" "<<endl; 
    head = head->next; 
} 
+0

@AaronNettles請接受回答 – OpenUserX03

+0

我不建議這樣做。因爲在循環之後,您的頭部指針受到損害,您在打印後無法找到鏈接列表。 – HenryLee