C/C++ 예제

시삽: 레드플러스 님 
게시판 이동:
 제목 : 13.2.1. 큐(Queue)
글번호: 245
작성자: 레드플러스
작성일: 2005/12/07 오전 11:46:09
조회수: 4065
/*
    큐 : FIFO 선입선출 방식의 데이터 구조
*/
#include <stdio.h>

#define MaxSize 100    // 큐 크기

int queue[MaxSize];    // 배열을 사용한 큐 만들기
int head = 0;        // 첫번째 데이터를 가리키는 포인터
int tail = 0;        // 마지막 데이터를 가리키는 포인터

int Enqueue(int); // 큐에 데이터를 입력하는 함수
int Dequeue(int*); // 큐에서 데이터를 출력하는 함수

//메인 함수
void main(void)
{
    int c, n;
    
    printf("큐에 데이터를 입력하시려면, E(e) 키를 입력하시고, \n"
        "큐에서 데이터를 출력하려면, D(d) 키를 입력하세요.\n");
    printf("]");
    
    while((c = getchar()) != EOF)
    {
        if (c == '\n')
        {
            continue;
        }

        if (c == 'x' || c == 'X')
        {
            exit(1);
        }

        if (c == 'e' || c == 'E')
        {
            printf("data--> ");
            scanf("%d", &n);
            if(Enqueue(n) == -1)
            {
                printf("큐가 가득 찼습니다.\n");
            }
        }

        if (c == 'd' || c == 'D')
        {
            if(Dequeue(&n) == -1){
                puts("큐가 비어있습니다.\n");
            }
            else{
                printf("queue data--> %d\n", n);
            }
        }
        
        printf("큐에 데이터를 입력하시려면, E(e) 키를 입력하시고, \n"
            "큐에서 데이터를 출력하려면, D(d) 키를 입력하세요.\n");    
        printf("]");
    }
}

//큐에 데이터를 입력하는 함수
int Enqueue(int n)
{
    if((tail + 1) % MaxSize != head)
    {
        queue[tail] = n;
        tail++;
        tail = tail % MaxSize;
        return 0;
    }
    else
    {
        return -1;    //큐가 가득 찼을 때
    }
}

//큐에서 데이터를 출력하는 함수
int Dequeue(int *n)
{
    if(tail != head)
    {
        *n = queue[head];
        head++;
        head = head % MaxSize;
        return 0;
    }
    else
    {
        return -1;    //큐가 비어있을 때
    }
}
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 14. 기타 - 레드플러스 2005-07-26 4784
  13. 데이터 구조(자료 구조) - 레드플러스 2005-07-26 5270
  13.1. 스택(Stack) - 레드플러스 2005-12-07 3622
  13.1.1. 스택(Stack) - 레드플러스 2005-12-07 3798
  스택 및 큐에 대한 설명한 엑셀 파일(강의용) 스택큐설명.xls(15 KB) 레드플러스 2007-01-23 3827
  13.2. 큐(Queue) - 레드플러스 2005-12-07 3575
현재글 13.2.1. 큐(Queue) - 레드플러스 2005-12-07 4065
  13.2.1.1. 큐(Queue)에 대해 설명할 때 사용한 엑셀 파일 스택큐설명2.xls(15 KB) 레드플러스 2007-01-25 3652
  13.3. 리스트(List) - 레드플러스 2005-12-07 3760
  13.3.1. 리스트(List) : LIFO형 리스트 - 레드플러스 2005-12-07 3729
  13.3.1.1. 리스트(List) : LIFO형 리스트 설명시 사용했던 엑셀 파일 리스트(LIFO)설명.xls(13 KB) 레드플러스 2007-01-26 3638
  13.3.2. 리스트(List) : FIFO형 리스트 - 레드플러스 2005-12-07 4053
  13.3.2.1. 리스트(List) : FIFO형 리스트 설명시 사용했던 엑셀 파일 리스트(FIFO)설명.xls(13 KB) 레드플러스 2007-01-26 3670
  13.3.3. 리스트(List) 입력 - 레드플러스 2005-12-08 3801
  13.3.4. 리스트(List) 삭제 - 레드플러스 2005-12-08 3640
  13.3.5. 이중 연결 리스트(Doubly Linked List) - 레드플러스 2005-12-08 6926
  13.3.6. 이중 연결 리스트 간단한 설명 : 이중연결리스트간단한설명.c - 레드플러스 2007-01-24 4723
  13.3.6. 이중 연결 리스트 간단한 설명시 사용했던 엑셀 파일 이중연결링크드리스트설명.xls(13 KB) 레드플러스 2007-01-24 3886
  13.4. 트리(Tree) - 레드플러스 2006-05-01 3623
  13.4.1. 이진 탐색 트리 - 레드플러스 2006-05-01 3925
  13.4.1.1. 이진 탐색 트리 설명시 사용했던 엑셀 파일 트리설명.xls(17 KB) 레드플러스 2007-01-25 3797
  13.5. 그래프(Graph) - 레드플러스 2006-05-02 3558
  13.5.1 그래프(Graph) - 레드플러스 2006-05-02 3580
  13.5.1.1 그래프(Graph) 설명시 사용했던 엑셀 파일 그래프설명.xls(15 KB) 레드플러스 2007-01-25 3769
  13.6. 해시테이블(Hashtable) - 레드플러스 2006-05-03 3742
  13.6.1 해시테이블(Hashtable) - 레드플러스 2006-05-03 4707
  데이터 구조 종합 예제 : 주소록 프로그램 종합예제_주소록프로그램.c(9 KB) 레드플러스 2006-11-02 4259
다음글 12. 메모리 관리 - 레드플러스 2005-07-26 5080
 
손님 사용자 Anonymous (손님)
로그인 Home