2016-10-26 4 views
0

1)私はまだリンクリストがどのようにC++で動作するかについて頭を落とそうとしています。現在、私は他のノードの間に新しいノードを挿入しようとしています。私は目的のノードを追加することができるよが、私はそれ印刷したら、その新しいノードの後に​​何が削除されているようだ:ノードの挿入と検索 - C++でリンクされたリスト

void InsertNode(int pos, int val) { 
     Node *n = new Node(); 
     n->data = val; 

     Node *pnt = head; 

     for (int i = 0; i < pos; i++) { 
      pnt = pnt->next; 
     } 

     pnt->next = n; 

     DisplayList(); 
    } 

2)そして、私は検索することができ、別の操作を作成することができるようにしたいです要素がリスト内に存在し、その位置を出力します(存在する場合)。しかし、私が今まで知っていることから、私が見つけたい値をリストの要素とどのように比較できるかはわかりません。

これは私の見た目ですが、if文が無効であることがわかります。 2番目の質問については

n->next = pnt->next; 
pnt->next = n; 

void SearchElement(int val) { 
    Node *list = head; 

    int i = 0; 
    while (list) { 
     list = list->next; 
     i++; 

     if (list == val) { cout << "The value is at position: " << i << endl; } 
    } 

    //print statement saying it doesn't exist 
} 

答えて

0

あなたが新しいノードを挿入する前に、nにリストの残りの部分を追加する必要があなたの値がリスト - >データです。

int i = 0; 
while (list) { 
    if (list->data == val) { 
     cout << "The value is at position: " << i << endl; 
     break; 
    } 
    list = list->next; 
    i++;   
} 
+0

ありがとう、パート2のために私の質問を解決しました。しかし、パート1では、「新しい」ノードが実際にリストに追加される代わりに別のノードを置き換えています。助言がありますか? – Devos

+0

私の答えを訂正しました.n> next = pnt-> nextでなければなりません。 –

関連する問題