2017-06-30 71 views
-2

我有一個單一的鏈表,功能如AddNode,DeleteNode,PrintList工作正常,但我想操縱它一點。具有更多數據類型內部結構的單鏈表

所以我們可以說我的結構是:

struct node 
{ 
    int data; 
    node* next; 
    bool used; 
} 

所以,我想在所有節點usedtrue。但是如果我想刪除一些節點,那麼它們的used應該設置爲false。所以基本上「使用」意味着節點在列表中。如果我想打印完整列表,我只需要打印true的節點。有什麼辦法可以做到這一點?還是毫無意義?

我試過這個,但顯然它說這個變量超出了範圍。那我該怎麼做?

void printList() 
{ 
    curr = head; 
    while(curr != NULL) 
    { 
     if (node->used == true) 
     { 
      cout << curr->data << " "; 
      curr = curr->next; 
     } 
    } 
} 
+1

'節點 - >'那你希望這會怎麼辦?它不會起作用,因爲'node'是類的名稱,而不是它的一個實例,但是如果你解釋了它的意圖,那會有所幫助。你只是指'curr->'? –

+0

如果你修改條件爲'if(curr-> used == true)',那麼你需要將'curr = curr-> next;'移出你的if塊,否則你在第一個假的時候會有一個無限循環。 – drescherjm

回答

0

你是不是測試在if您當前節點指針,你正在爲下一個元素在錯誤的位置。

你的代碼應該是:

void printList() 
    { 
     curr = head; 
     while(curr != NULL) 
     { 

      if (curr->used == true) 
      { 
       cout << curr->data << " "; 
      } 

      curr = curr->next; 

     } 

    }