2012-02-20 39 views
0

我目前正在執行一個鏈表(在我的休息時間!)而且我發現我擁有的功能,像這樣的結構:消除在鏈表額外要求

void traverseList(node *head){ 
if(head != 0){ 
    while(head->next !=0){ 
     cout << head->data << endl; 
     head = head->next; 
    } 

    //one extra for the node at the end 
    cout << head->data << endl; 
} 
} 

我在想人知道的一種消除「額外」電話的方法?

+3

究竟什麼是'新node'做什麼呢? – 2012-02-20 16:51:28

+1

@Tom正如Mike所說,你爲什麼要在這裏創建一個新的節點對象?您無需創建內存泄漏。 – 2012-02-20 17:12:48

+0

你是對的 - 我不需要那個。 – 2012-02-20 17:24:49

回答

3

更改此:

if(iterator != 0){ 
    while(iterator->next !=0){ 
     cout << iterator->data << endl; 
     iterator = iterator->next; 
    } 

    //one extra for the node at the end 
    cout << iterator->data << endl; 
} 

這樣:

while(iterator != 0) { 
    cout << iterator->data << endl; 
    iterator = iterator->next; 
} 
5

你的功能可以大大簡化爲:

void traverseList(node *head) 
{ 
    for(node * iterator = head; iterator; iterator = iterator->next) 
    { 
     cout << iterator->data << endl; 
    } 
} 
相關問題