상각 시간 에 다음 연산을 지원하는 순서 목록을 유지하기위한 데이터 구조가 있습니까?
GetElement (k) : 리스트 의 번째 요소를 반환 합니다.
InsertAfter (x, y) : x 바로 다음에 새 요소 y를 목록에 삽입합니다.
Delete (x) : 목록에서 x를 제거합니다.
마지막 두 작업의 경우 x가 데이터 구조에 대한 포인터로 제공되었다고 가정 할 수 있습니다. InsertElement는 y에 해당하는 포인터를 반환합니다. InsertAfter (NULL, y)는 목록의 시작 부분에 y를 삽입합니다.
예를 들어, 빈 데이터 구조로 시작하여 다음 작업은 아래에 표시된대로 순서가 지정된 목록을 업데이트합니다.
- InsertAfter (NULL, a) [a]
- InsertAfter (NULL, b) [b, a]
- InsertAfter (b, c) [b, c, a]
- InsertAfter (a, d) [b, c, a, d]
- 삭제 (c) [b, a, d]
이 다섯 가지 업데이트 후에 GetElement (2)는 d를 반환하고 GetElement (3)은 오류를 반환해야합니다.