큐, 환원큐 모두 양방향 리스트 또는 배열로 구현 할 수 있는데
*리스트로 짤 경우 양방향리스트로 구성해야 한다
배열로 하면 배열값을 밀어내야 하는 상황이 발생 함으로
양방향 리스트로 만드는 것이 일반적으로 효율적이다
환원큐가 비었을 때는 front == real 이며
꽉 찾을때는 하나의 공간을 두고 front 와 real 이 1 간격으로 배치하게 된다
real 에서 데이터 추가, front 에서 데이터 빼온다
real 에 추가시 현재 가르키고 있는 곳에 데이터를 추가 한 후 real++
front 에서는 현재 가르키고 있는 곳에서 데이터를 빼낸 후 front++
그냥 front의 값만 가져오려면 {리스트&배열}[ front ] 의 값을 가져오고
(+ 가 순방향이라고 가정했을때)
real 의 값만 가져오려면 {리스트&배열}[Dec(real-1 )] 을 가져오면 된다
환원큐의 인덱싱은 % 를 활용
m_size 가 배열 사이즈 만약 10 이라고 한다면
현재 가르키는 곳의 다음 번지를 알기 위하여
가르키는 곳 n 에 +1 을 한 후
전체 사이즈로 나누면 배열 사이즈 버위 내에서
순환하는 인덱스 번호를 얻어올 수 있다
감소 ( Dec() )는 (n-1) % m_size;
반응형
'알고리즘 & 자료구조 > 알고리즘&자료구조' 카테고리의 다른 글
문자를 숫자로 변환, int 변수의 숫자를 한개씩 때오기 (0) | 2012.10.31 |
---|---|
중위표현식을 후위로 변환 (0) | 2012.10.31 |
단일연결리스트 스택 (0) | 2012.10.31 |
스택 , 배열과 리스트 자료구조의 차이 (0) | 2012.10.31 |
이중리스트의 사용, 마지막 노드의 순환 (0) | 2012.10.31 |