STL 리스트(List) 구현하기 1. List Class

리스트(List)는 자료구조 중 '양방향 연결 리스트(Doubly Linked List)'를 구현한 것이다.

그래서 리스트를 알려면 '연결 리스트'라는 자료구조의 이해가 꼭 필요하다. (자료구조 포스팅에 있다.(click))

연결 리스트에 대한 자세한 설명은 생략하겠다.

 

리스트 컨테이너는 IDequeContainer를 인터페이스로 가진다.

IContainer -> ILinearContainer -> IDequeContainer와 같은 상속 관계를 가진다.

고로 양방향에서 push, pop이 가능하다.

 

위 3개의 인터페이스에 있는 모든 추상 메서드를 구체화 해야하며,

리스트 고유 메서드도 몇개 추가된다.

 

List의 주요 메서들1) ACCESSORS

begin: 첫 번째 위치를 가리키는 반복자를 리턴한다.

end: 마지막 요소를 가리키는 반복자를 리턴한다.

rbgin: begin과 비슷한데 다른 점은 역 방향으로 첫 번째 요소를 리턴한다. 그리고 사용하는 반복자도 다르다.

rend: end와 비슷한데 다른 점은 역 방향으로 마지막 요소 다음을 가리킨다. 그리고 사용하는 반복자도 다르다.

push_front: 첫 번째 위치에 데이터를 추가한다.

pop_front: 첫 번째 위치의 데이터를 삭제한다.

push_back: 마지막 위치에 데이터를 추가한다.

pop_back: 마지막 위치의 데이터를 삭제한다.

front: 첫 번째 데이터의 값을 리턴한다.

back: 마지막 데이터의 값을 리턴한다.

push: 새로운 데이터를 끝에 삽입한다.(push_back과 비슷)

 

2) COMMON

clear: 저장하고 있는 모든 데이터를 삭제한다.

empty: 저장 데이터 유/무, 없으면 true를 리턴한다. 

size: 저장하고 있는 데이터의 개수를 리턴한다.:

swap: 데이터를 교환한다.

 

3) ASSIGN

assign: 1. 지정된 개수만큼 특정 데이터로 채운다, 2. 반복자의 지정한 영역으로 데이터를 채운다.

 

4) INSERT

insert:: 1. 지정한 위치에 데이터를 삽입한다. 2. 지정된 위치에 지정된 개수만큼 데이터를 삽입한다. 3. 지정된 위체이 지정된 범위의 데이터를 삽입한다.

 

5) ERASE & REMOVE

erase: 1. 지정한 위치에 있는 데이터를 삭제한다.  2. 지정한 범위에 잇는 데이터들을 삭제한다.

6) ALGORITHM

sort: 데이터를 정렬한다.

알고리즘은 여기서 구현하지 않고 나중에 알고리즘 파트에서 구현해보도록 하겠다.

 

각설하고 한글 주석을 달은 소스를 살펴보겠다.


// dc에서 소스 생략


http://oppacoding.com/article/javascript/140