카테고리 없음

(10845) C로 큐 구현

Jr.Kelly 2018. 2. 2. 19:50
#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

}

}

}

}