(10845) C로 큐 구현
#include <stdio.h> #include <string.h> // strcmp 함수가 선언된 헤더 파일 int main() { char s1[10] = "Hello"; char *s2 = "Hello"; int ret = strcmp(s1, s2); // 두 문자열이 같은지 문자열 비교 printf("%d\n", ret); // 0: 두 문자열이 같으면 0 return 0; }
strmp함수로 두 문자열이 같으면 0을 이용해서 명령값을 받아들인다!
#include <stdio.h>
#include <string.h>
int main() {
int queue[10000]; // 배열을 선언해준다.
int front, rear; // 위치를 선언
char cmd[5]; // 명령을 입력받기 위해 선언
front = 0;
rear = 0;
int N; // 명령의 갯수
int i;
int num;
scanf("%d", &N); // 명령의 갯수를 입력받는다.
for (i = 0; i < N; i++) {
scanf("%s", &cmd); // 명령을 입력받는다.
if (strcmp(cmd, "push") == 0) { // cmd가 push면
scanf("%d", &num);
queue[rear] = num; // rear 자리에 push 받은 수를 넣는다.
rear++; // 추가하고 rear 위치 증가
}
else if (strcmp(cmd, "pop") == 0) { // 큐의 가장 앞에 있는 정수를 빼고 출력
if (queue[front] == 0) {
printf("%d\n", -1);
}
else {
printf("%d\n", queue[front]); // front의 수를 출력한다(가장앞의수)
front++; // 그 다음위치로 옮긴다!
}
}
else if (strcmp(cmd, "front") == 0) {
if (front - rear == 0) {
printf("%d\n", -1); // 큐가 비었으면 -1 출력
}
else {
printf("%d\n", queue[front]);
}
}
else if (strcmp(cmd, "back")) {
if (front - rear == 0) {
printf("%d\n", -1); // 들어있는 정수가 없으면(큐가 비었으면 0)
}
else {
printf("%d\n", queue[rear - 1]); // rear는 마지막 요소 그다음을 가리키니까!
}
}
else if (strcmp(cmd, "size")) { // 큐 사이즈 출력하기.
printf("%d\n", rear - front);
}
else if (strcmp(cmd, "empty")) {
if (rear - front == 0) {
printf("%d\n", 1);
}// 비엇는지 검사. 비엇으면 1
else {
printf("%d\n", 0); // 아니면 0
}
}
}
}