ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • queue
    C연습 2021. 1. 17. 11:50
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX_SIZE 10
    
    typedef int element;
    typedef struct {
    	int front;
    	int rear;
    	element data[MAX_SIZE];
    } queuetype;
    
    void init_queue(queuetype *q) {
    	q->front = -1;
    	q->rear = -1;
    }
    
    int underflow(queuetype *q) {
    	return (q->rear == q->front);
    }
    
    int overflow(queuetype *q) {
    	return (q->rear == MAX_SIZE - 1);
    }
    
    int queue_attach(queuetype *q, int n) {
    	if (overflow(q) == 1)
    		return 0;
    	else 
    		q->data[++(q->rear)] = n;
    	return 1;
    }
    
    int dequeue(queuetype *q) {
    	if (underflow(q) == 1)
    		return 0;
    	else
    		++(q->front);
    	return 1;
    }
    
    void queue_printf(queuetype *q) 
    {
    	for (int i = 0; i <= q->rear; i++)
    	{
    		if (i > q->front)
    			printf("%d ", q->data[i]);
    	}
    }
    
    void error_printf(queuetype *error)
    {
    	for (int i = 0; i <= error->rear; i++) 
    	{
    		if (i > error->front)
    		{
    			if (error->data[i] == 1) {
    				printf("overflow\n");
    			}
    			else if (error->data[i] == 0) {
    				printf("underflow\n");
    			}
    		}
    	}
    }
    
    int main()
    {
    	queuetype queue;
    	queuetype error;
    
    	char check;
    	int qelement;
    	int datacounter;
    	int pushelement;
    
    	init_queue(&queue);
    	init_queue(&error);
    
    	scanf_s("%d", &datacounter);
    	
    	if (datacounter > 10)
    		return 0;
    
    	for (int i = 0; i < datacounter; i++)
    	{
    		scanf_s(" %c", &check);
    		if (check == 'e' || check == 'E')
    		{
    			scanf_s("%d", &pushelement);
    			if (queue_attach(&queue, pushelement) == 0)
    				queue_attach(&error, 1);
    		}
    		else if (check == 'd' || check == 'D') 
    		{
    			if (dequeue(&queue) == 0) {
    				queue_attach(&error, 0);
    			}
    		}
    		else break;
    	}
    
    	error_printf(&error);
    	queue_printf(&queue);
    
    	return 0;
    }

    'C연습' 카테고리의 다른 글

    프린터_queue  (0) 2021.01.17
    프린터_우선순위_queue  (0) 2021.01.17
    이진 검색 트리  (0) 2021.01.17
    원형큐_소수고리  (0) 2021.01.17
    연결 리스트  (0) 2021.01.17

    댓글

Designed by Tistory.