본문 바로가기

old_Coding/C/C++

[C++] Queue Linked List 작성





이번엔 큐입니다.
Stack에서는 맨 앞에있는 Top만 참조했었습니다.
Queue의 개념은 이렇습니다.

가장 먼저들어온 녀석을 가장 먼저 처리해주는겁니다.
예로 매표소에 줄서있는 모습을 상상하시면 되는데요.
A부터 순서대로 G까지 줄을 섰다고 가정하면
A B C D E F G 순으로 줄을 섰겠죠?
여기서 Queue자료형에서는 A를 가장 먼저 처리해줍니다.
먼저 줄선 사람들을 먼저처리해줘야 공평하겠죠??
가장 먼저 들어온 A를 처리하면
B C D E F G 가 되겠네요

Queue에서는 빠른 처리를 위해 Front와 Rear 두개의 포인터변수를 둡니다.
앞쪽을 처리한다고하고(처리후 삭제) 뒷쪽에 새로운 데이터들이 줄을 선다고했을때
매번 List처럼 포인터를 끝까지 옮겨가면 시간적으로 비효율적이겠죠.
자료들이 늘어날수록 체감은 점점 더해질겁니다.
그래서 Rear 포인터를 꼬리에 둡니다.


여기까지 이해하셨으면 변화된 부분만 보시죠.



void Add(int) ;   // 맨 뒤에 데이터삽입
맨 뒤에다가 데이터를 삽입합니다.
Simple Linked List에서 맨 뒤에 데이터를삽입하려면
그만큼 포인터가 움직여야 했는데요
Rear포인터가 있으므로 그런 작업들을 할 필요가 없게되었습니다.
소스파일 보시면 바로 알아내실수 있을겁니다.


void Remove() ;   // 맨 앞 데이터 삭제
맨 앞 노드를 삭제합니다.
이는 Stack에 Pop과 코드가 같은데요.
서로의 개념이 다르기 때문에 Remove라는 용어로 작성했습니다.
결국 하는 일은 같겠죠.




Simple Linked List 나 Stack, Queue 까지는 정말 기본중에 기본적인
내용만 담은 소스입니다.
하지만 공학이라는게 원리나 원칙만 알면 술술이 풀릴수 있다고 생각합니다.
이정도는 가볍게 넘기실 분들이 많겠지만,
혹여 어느부분에 막혀 포기하지마시고 끝까지 맨땅에 해딩해봅시다~