구조체
덱 (구조체로 구현)
덱 기본 설명 덱은 간단하게 생각해서 원형 큐를 조금 확장시킨 개념이라 생각할 수 있다. 원형 큐는 rear에서 enqueue를 하고 front에서 dequeue를 했지만, 덱은 여기서 확장해서 front과 rear 모두에서 enqueue와 dequeue를 한다고 생각하면 된다. 코드의 구현에 있어서 생각해야 할 것은, 원형 큐에서의 enqueue를 push_front와 push_back로 나누고, dequeue를 pop_front와 pop_back으로 나누고 코드를 잘 짜야한다는 것이다. 밑에서 설명할 함수들에 있는 full()함수와 empty()함수는 완성된 코드에 있다. void enqueue(Queue* q, int data) { if (full(q)) { printf("큐가 포화상태입니다. 데이..
원형 큐 (구조체로 구현)
원형 큐의 기본 설명은 '원형 큐 (배열로 구현)'에서 이미 했으므로 생략하겠다. 바로 구조체로 구현한 원형 큐의 동작 상태를 볼 수 있는 코드로 넘어가겠다. 원형 큐 구현 #include #include #include #define MAX 5 typedef struct Queue { int queue[MAX]; int front, rear; }Queue; void init_queue(Queue* q) { q->front = q->rear = 0; //front, rear 0으로 초기화 } int empty(Queue* q) { return (q->front == q->rear); } int full(Queue* q) { return (q->front == ((q->rear+1)%MAX)); } voi..
선형 큐 (구조체로 구현)
선형 큐 기본 설명 우선은 큐가 동작하는 모습을 이해하기 위한 코드의 설명을 하고 마지막에 스택을 구현했을 때처럼 직접 입력하는 코드는 따로 보이겠다. 밑의 그림을 보면 큐의 초기 상태는 front와 rear가 둘 다 -1에 있을 때다. 큐는 스택과 달리 먼저 들어온 것이 먼저 나가는 형태다. (FIFO, first in first out) 선형 큐의 동작 원리의 이해를 돕기 위해 몇 가지 동작을 해보겠다. 기본 코드는 다음과 같이 설정한다. #include #include #define MAX 5 typedef struct Queue{ int front; int rear; int data[MAX]; } Queue; [-1] [0] [1] [2] [3] [4] front, rear (NULL) (NULL..
스택 (구조체로 구현)
'백준 10828번: 스택' 문제를 베이스로 둔 구조체로 구현한 스택의 코드다. //스택을 구조체로 구현하기 //push X: 정수 X를 스택에 넣는 연산이다. //pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. //size: 스택에 들어있는 정수의 개수를 출력한다. //full: 스택이 꽉 찼으면 1, 아니면 0을 출력한다. //empty: 스택이 비어있으면 1, 아니면 0을 출력한다. //top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. #include #include #define MAX 100000 typedef struct Stack{ int arr[MAX..