2017-06-30 7 views
-2

私は単一のリンクリストを持ち、AddNodeDeleteNodePrintListのような機能はうまく動作しますが、それにちょっとした操作が必要です。構造内に多くのデータ型を持つ単一のリンクされたリスト

それでは、私の構造があるとしましょう:

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)に条件を固定すると、ifブロックから 'curr = curr-> next;'を移動する必要があります。そうでなければ、最初のfalseで無限ループになります。 – drescherjm

答えて

0

あなたはifであなたの現在のノードのポインタをテストしていない、とあなたは間違った場所に次の要素に移動しています。

あなたのコードは次のようになります。

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

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

      curr = curr->next; 

     } 

    } 
関連する問題