동적으로 변경되는 목록을 반복 할 수있게 해주는 좋은 접근 방식/알고리즘은 무엇입니까?동적으로 변경되는 목록을 루프 오버
- 이 목록은 중복
- I는 현재 요소 다음 다음 요소를 필요로 포함 할 수 있습니다. 나는 다음 반복에
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 될 수 있음을 의미합니다. 단일 스레드 만 가정하십시오.
마지막 줄은 c가 아니고 d가 아니어야합니까? 또한,'nextItem()','list [6]'(currentItem = 5 이후) 호출이 오류를 던지는 방법은 존재하지 않기 때문에 이해하지 못하겠습니까? 첫 번째 요소가 목록의 끝 부분에 도달 할 때 첫 번째 요소로 되돌아 가려는 것을 제외하면. – Ash
@Ashwin_Nair 네, 네 말이 맞아. 방금 실수를 바로 잡았습니다. 처음에는 숫자로 채워진 목록을 작성한 다음 혼란 스럽다고 생각하여 편지로 변경했습니다. 또한 currentItem은 목록의 요소이며 인덱스가 아닙니다 – Krimson
만약 내가 당신이라면 인덱스를 사용하여 currentItem을 변경하면 중복에 대해 걱정할 필요가 없습니다. C# 구현을 대답으로 추가하겠습니다. – Ash