저는 C++에서 실습을하고 있으며 목록에서 요소를 제거하고 나머지는 왼쪽으로 옮기는 방법을 이해하려고합니다. 나는 깔끔한 해결책이 있는지 궁금해. 여기 내 버전, 일을 할 것 같다,하지만 난 더 나은 방법이 느낌이 :C++의 목록에서 요소 제거
Account AccountList::remove(int i){
if(i>=0 && i<size()) {
for (int n = i; n < size(); n++) {
if(i+1!=size()) {
aList[n]=aList[n+1];
}
}
sz--;
return aList[i];
} else {
return Account();
}
}
목록이 링크 된 목록 일 필요는 없습니다. 어레이를 백 엔드 구조로 사용하는 것은 허용됩니다. –
'목록'이 연결된 목록을 의미 할 수 있다고 가정하더라도 (왜 [skiplist] (http://en.wikipedia.org/wiki/Skiplist) 또는 [arraylist] (http : // en.wikipedia.org/wiki/Arraylist)?) 연결된 목록에는 O (n) 조회로 인해 임의 요소에 대한 O (1) 제거가 없습니다. – Grizzly
@ Grizzly 예,하지만 이미 노드 제거 포인터가 있다고 가정하고있었습니다. 이 경우에는'begin() + n'이됩니다. –