c·c++/c 프로그래밍

원형큐

바로이순간 2012. 10. 8. 12:36

#include <stdio.h>

#include <stdlib.h>

#define SIZE 8

typedef struct _q {

  int queue[SIZE];

  int front;

  int rear;

} queue;

queue q;

int isfull() {

  return (q.rear+1)%SIZE==q.front;

}

int isempty() {

  return (q.rear==q.front);

}

void put(int x) {

  if(isfull()) {

    printf("큐가 가득찼습니다.");

    exit(1);

  }

  q.queue[q.rear]=x;

  q.rear=(q.rear+1)%SIZE;

}

int get() {

  int temp;

  if(isempty()) {

    printf("큐가 비었습니다.");

    exit(1);

  }

  temp=q.queue[q.front];

  q.front=(q.front+1)%SIZE;

  return temp;

}

int main() {

  int num, choice;

  q.front=q.rear=0;

  while(1) {// 무한 루프를 돕니다.

    // 메뉴를 프린트해줍니다.

    printf("1.데이터삽입, 2.데이터삭제, 3.종료: ");

    scanf("%d", &choice); // 어떤 기능을 선택할 지를 입력받습니다.

    // 만약 1.데이터삽입를 선택하였다면

    if(choice==1) {

      printf("정수 입력 : ");

      scanf("%d", &num);  // 정수를 입력받아서

      put(num);           // num를 큐에 넣습니다.

    }

    // 만약 2.데이터삭제를 선택하였다면

    else if(choice==2) {

      num=get();  // 큐에 있는 원소를 num로 반환받아서

      printf("get: %d\n", num);   // num값을 출력해 줍니다.

    }

    // 만약 3.종료를 선택했다면

    else if(choice==3)

      break;  // while문을 빠져나갑니다.

  }  // 여기가 while문의 끝입니다.


  return 0;

}


===============================================


#include <stdio.h>

#include <stdlib.h>

#define SIZE 100

int queue[SIZE]={0,};

int front=0, rear=0;

int Q_Empty() {

  return front==rear;

}

int Q_Full() {

  return (rear+1)%SIZE==front;

}

void Q_Insert(int x) {

  if(Q_Full()) {

    printf("큐가 가득찼습니다.");

    exit(1);

  }

  queue[rear]=x;

  rear=(rear+1)%SIZE;

}

int Q_Delete() {

  int temp;

  if(Q_Empty()) {

    printf("큐가 비었습니다.");

    exit(1);

  }

  temp=queue[front];

  front=(front+1)%SIZE;

  return temp;

}

int main() {

  int num, choice;

  while(1) {// 무한 루프를 돕니다.

    // 메뉴를 프린트해줍니다.

    printf("1.데이터삽입, 2.데이터삭제, 3.종료: ");

    scanf("%d", &choice); // 어떤 기능을 선택할 지를 입력받습니다.

    // 만약 1.데이터삽입를 선택하였다면

    if(choice==1) {

      printf("정수 입력 : ");

      scanf("%d", &num);  // 정수를 입력받아서

      Q_Insert(num);      // num를 큐에 넣습니다.

    }

    // 만약 2.데이터삭제를 선택하였다면

    else if(choice==2) {

      num=Q_Delete();  // 큐에 있는 원소를 num로 반환받아서

      printf("Q_Delete: %d\n", num);   // num값을 출력해 줍니다.

    }

    // 만약 3.종료를 선택했다면

    else if(choice==3)

      break;  // while문을 빠져나갑니다.

  }  // 여기가 while문의 끝입니다.


  return 0;

}

'c·c++ > c 프로그래밍' 카테고리의 다른 글

진법변환  (0) 2012.10.11
달력출력  (0) 2012.10.10
c언어에서 %[^\n] 가 의미하는 것이 무엇인가요 ?  (0) 2012.10.08
주석 제거하기  (0) 2012.10.02
조합의 계산  (0) 2012.09.19