2016-04-17 14 views
1

私は現在、ケンブリッジ・ブックのdataStructuresを学習しています。問題について考えるたびに、解決策を見る前に解決しようとしています。 私はRemoveLast()C#LinkedListのデータ構造をベースから操作する

public void RemoveLast() 
     { 
      if (end != null) 
      { 
       Node runner = start; //if end != null then start is initialized. 
       while (runner != end) 
       { 
        runner = runner.Next; 
       } 
       runner.Next = null; 
       end = runner; 
      } 
     } 

私のコードに問題が何であるとの問題を抱えていますか? Thxみんな! runnerendに等しく、ループの終わり

while (runner != end) 

答えて

1

は、ループ状態を考えます。したがって、基本的にend.Nextnullに設定し、endをそれ自身に設定しています。

endノードの直前にノードに移動する必要があります。これに

変更ループ条件:

while (runner.Next != end) 

これは、ループの最後で、runnerは正確にendノードの前のノードになることを確認します。

startendの場合(リンクされたリストにノードが1つしかない場合)は、このコードでは処理されません。

+0

くそー、これは見たことがありません!どうも! – N3wbie

+0

あなたはようこそ –

関連する問題