動的に変化するリストをループするための良いアプローチ/アルゴリズムは何でしょうか。動的に変化するリストをループする
- このリストには、重複
- を含めることができます私は、現在の要素の後に次の要素が必要です。私は次の反復で
a[n]
に現在よすなわちあれば、私はa[n]
はそれが重複 では動作しません、
しかし非常に簡単である現在
私は、この(擬似コード)をやってみましたかかわらずたいです
List<String> list = new List<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
int currentItem = "a";
function nextItem(){
int index = findIndex(currentItem);
currentItem = list[index+1];
return currentItem;
}
print(nextItem()) #b
print(nextItem()) #c
list.addAt(3, "z") #add z at the 3rd index
print(nextItem()) #z
print(nextItem()) #d
print(nextItem()) #e
私はこの問題にリンクリストを使用することを考えています。あなたは別の解決策を勧めますか、リンクされたリストだけが唯一の方法でしょうか?
編集: 動的に変更すると、whoesコンテンツが 'ループ'の途中、つまりnextItem()呼び出しの中でmoddifiedできることを意味します。単一のスレッドのみを仮定します。
最後の行ではなく、dを返すべきですか?また、 'nextItem()'、 'list [6]'(currentItem = 5以降)が最初に呼び出されたときに、それが存在しないので、エラーを投げる方法を理解していませんか?最初の要素がリストの最後に到達したときに最初の要素にループバックすることを意味しない限り。 – Ash
@Ashwin_Nairはいあなたの権利。私はエラーを修正しました。私はリストが最初に数字で満たされていて、混乱していたので、それを文字に変更しました。また、currentItemはリスト内の要素であり、インデックスではありません – Krimson
もし私があなただったら、currentItemをインデックスを使用するように変更して、重複を心配する必要はありません。私は答えとしてC#の実装を追加します。 – Ash