목록 앞이 끝 부분에서 시작하는 줄 바꿈 배열에 대한 반복자를 작성해야합니다. 따라서 Iterator는 "front"변수에서 시작하여 목록의 끝까지 반복 한 다음 목록의 시작 부분에서 시작하여 "rear"에 도달 할 때까지 반복해야합니다.래핑하는 반복자를 쓰면 끝으로 시작하여 모든 요소를 순서대로 인쇄합니다.
"rear"배열의 마지막 요소가 인쇄되지 않고 배열이 꽉 찼을 때 요소를 인쇄하지 않습니다.
public Iterator<E> iterator(){
return new IteratorAssist();
}
class IteratorAssist implements Iterator<E> {
public IteratorAssist() {
index = front;
}
@Override
public boolean hasNext() {
if(index != data.length)
return index != rear + 1 ;
else if(index == data.length)
index = 0;
return index != rear + 1;
}
@Override
public E next() {
if(!hasNext())
throw new NoSuchElementException();
return data[index++];
}
}
솔루션에 관한 한, 나는 단순히'data' 자체를 연결 한 다음 결과를 반복하므로 포인터로 번거 로움을 피할 수 있습니다. – Bohemian
앞뒤를 설정 한 코드를 표시 할 수 있습니까? 그들은 언제든지 바뀌나요? 그리고 당신은 그들이 같은 요소가 아니며 앞이 항상> 뒷쪽이라고 확신합니까? 또한, 두 개의 인쇄물 케이스 (뒤쪽 요소를 건너 뛰고 모든 요소를 건너 뛸 때)가있는 코드는 매우 유용합니다. – Assafs
다음은 귀하의 문제에 유용 할 수있는 답변을 작성한 것입니다. 귀하의 질문에 조금 더 자세한 내용을 추가 할 수 있다면 기꺼이 추가하고 구체적으로 설명해 드리겠습니다. 그것이 당신을 도왔다 고 느낀다면, 그것을 받아 들일 수 있습니까? 답변 옆에있는 회색 확인 표시를 클릭하면 녹색으로 변합니다. – Assafs