서론
큐의 필수함수인 push, pop, top(=front)를 C로 구현했다.
다른 글
구현
//c++
#include <iostream>
typedef struct list {
int item;
list *next;
}list;
typedef struct queue {
list *front;
list *rear;
int cnt;
}queue;
void create(queue *q) {
list *head = (list*)malloc(sizeof(list));
head->item = NULL;
head->next = NULL;
q->cnt = 0;
q->front = q->rear = head;
}
void push(queue* q, int item) {
list *tmp = (list*)malloc(sizeof(list));
tmp->item = item;
tmp->next = NULL;
if (q->front->item == NULL) {
q->front = q->rear = tmp;
}
else {
q->rear->next = tmp;
q->rear = tmp;
}
q->cnt++;
//std::cout << q->rear->item << std::endl;
}
void pop(queue* q) {
list *tmp = (list*)malloc(sizeof(list));
tmp = q->front;
q->front = q->front->next;
free(tmp);
q->cnt--;
//std::cout << q->front->item << std::endl;
}
int top(queue *q) {
if (q->front != NULL) return q->front->item;
else return -1;
}
int main() {
int n;
std::cin >> n;
queue q;
create(&q);
for (int i = 1; i <= n; i++) {
push(&q, i);
}
while (q.cnt != 1) {
//std::cout << top(&q) << std::endl;
pop(&q);
push(&q, top(&q));
pop(&q);
}
std::cout << top(&q);
}