문제
링크
풀이
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
typedef struct Queue {
Node* front;
Node* rear;
} Queue;
void init(Queue* q) {
q->front = q->rear = NULL;
}
int empty(Queue* q) {
return q->front == NULL;
}
void enqueue(Queue* q, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (empty(q)) q->front = newNode;
else q->rear->next = newNode;
q->rear = newNode;
}
int dequeue(Queue* q) {
Node* front = q->front;
int data = front->data;
q->front = front->next;
free(front);
return data;
}
int main(void) {
int n, k;
Queue q;
init(&q);
scanf("%d %d", &n, &k);
for (int i=0; i<n; i++) {
enqueue(&q, i+1);
}
printf("<");
while (!empty(&q)) {
for (int i=0; i<k-1; i++) {
enqueue(&q, dequeue(&q));
}
printf("%d", dequeue(&q));
if (!empty(&q)) printf(", ");
}
printf(">");
return 0;
}