2017-12-02 8 views
-1

私は次のようにリンクされたリスト内の2つのノードを交換しよう:のスワッピングリンクリスト要素

void swapTwo(course*& first, course*& second) 
{ 
    auto temp = first; 
    first = second; 
    second = temp; 
    second->next = first->next;  // error right here due to self-referencing 
    first->next = second; 
} 

2次>は次すでに自己参照であるので、私はエラーを得ました。これに優雅な解決策はありますか?私は2つのコースの要素を作成し、最初と2番目を再構築することができますが、それはとても大変です。ありがとう!

+0

ノードのデータ要素の大きさはどれくらいですか? 'std :: swap(first-> data、second-> data);' – user4581301

+0

これが機能するには、以前のノードにアクセスする必要があります。これを二重循環リンクリストにすると、多くの問題を解決できます。 – PythEch

+0

紳士(もしあれば女性)は、私はベクトルに変換し、ソートして、元に戻すことが私に多くの問題を救うだろうと考えました。心から感謝してあなたの意見と親切。 – CaTx

答えて

1

複数のシナリオを考慮する必要があります。 2が隣接していない、また、それらのいずれかが頭や尾である

  1. 彼らは1つがあるとき
  2. どちらかが頭や尾
  3. で隣接している場合には頭がもう一方は尾です。
  4. リンクリストでは2つだけです。
+0

ありがとう!リンクされたリストをベクターに変換して並べ替え、リンクされたリストに戻すことができると思った。方法は頭痛が少ないように。 – CaTx