▷ 큐(Quene)
- 큐(Queue)의 데이터 제거는 대기 줄의 가장 앞에서 수행되며,
데이터의 삽입은 대기 줄의 가장 뒤에서 수행되는 제한된 리스트 구조를 말한다.
- 가장 먼저 삽입된 데이터가(First In) 가장 먼저 제거되는(First Out) 선입선출(FIFO)형태의 자료구조를 가지고 있다.
- 제일 처음에 입력된 데이터를 front라고 하고,
- 가장 나중에 입력된 데이터를 rear라고 한다.
- 데이터의 삽입은 rear에서 이루어지고,
- 삭제는 front에서 이루어진다.
제공되는 큐를 이용하여 만들기.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> using namespace std; #include <queue> void main() { queue <int> q; // 데이터 입력. for(int i = 0; i < 10; i++) q.push(i); // 데이터 출력. for(int i = 0; i < 10; i++) { printf("%d \n", q.front()); q.pop(); } } |
직접구현.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include <iostream> using namespace std; #define MAX 9 typedef struct QUEUE{ int Data; struct QUEUE* pNext; }QUEUE; QUEUE* pHead = NULL; QUEUE* pTail = NULL; void push( int Data ); int front(); void pop(); void main() { for(int i = 0; i < MAX; i++) push(i); for(int j = 0; j < MAX; j++) { printf("%d\n", front()); pop(); } } void push( int Data ) { QUEUE* NewNode = new QUEUE; NewNode->Data = Data; NewNode->pNext = NULL; if(pHead == NULL) pHead = NewNode; else pTail->pNext = NewNode; pTail = NewNode; } void pop() { if( pHead == NULL ) { printf("데이터가 존재하지 않습니다. \n"); return; } QUEUE* pRemove = pHead; pHead = pHead->pNext; delete pRemove; } int front() { if( pHead == NULL ) { printf("데이터가 존재하지 않습니다. \n"); return -1; } return pHead->Data; } |
양방향
결과
'자료구조' 카테고리의 다른 글
단방향 연결리스트 반대로 뒤집기. (0) | 2017.04.11 |
---|---|
해시 테이블 (Hash Table) (0) | 2017.01.08 |
스택(Stack) (0) | 2017.01.07 |
단방향 연결 리스트(Linked List) (0) | 2017.01.06 |
연결 리스트(Linked List) (0) | 2017.01.06 |