자료구조_c언어_큐스택_queueStack_01
2021. 5. 17. 16:08ㆍ개발하는중/자료구조
728x90
반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | #include <stdio.h> #include <stdlib.h> #define Q_SIZE 100 typedef char element; typedef struct { element queue[Q_SIZE]; int front, rear; }QueueType; QueueType* createQueue() { QueueType *Q; Q = (QueueType*)malloc(sizeof(QueueType)); Q->front = -1; Q->rear = -1; return Q; } int isEmpty(QueueType *Q) { if (Q->front == Q->rear) { printf("\nQueue is empty!\n"); return 1; } else { return 0; } } int isFull(QueueType *Q) { if (Q->rear == Q_SIZE - 1) { printf("\nQueue is full!\n"); return 1; } else { return 0; } } void enQueue(QueueType *Q, element item) { if (isFull(Q)) { exit(1); } else { Q->rear++; // rear +1 이동 Q->queue[Q->rear] = item; // Q->queue배열에 item데이터 를 넣는다. 배열이라 데이터 입력떄마다 증가해야기떄문에 Q->rear 을 넣어줌 } } element deQueue(QueueType *Q) { if (isEmpty(Q)) { exit(1); } else { Q->front++; // front +1 이동 return Q->queue[Q->front]; } } void del(QueueType *Q) { if (isEmpty(Q)) { exit(1); } else { Q->front++; // del은 꺼내지 않고 그냥 pass한다. 해당 데이터 그냥 지나친다고 보면됨 } } element peek(QueueType *Q) { if (isEmpty(Q)) { exit(1); } else { return Q->queue[Q->front + 1]; } } void printQ(QueueType *Q) { int i; printf("Queue :["); for (i = Q->front+1; i <= Q->rear; i++) { // front출력담당 front는 -1부터나 비어있는칸에 있기떄문에 +1해주고 printf("%3c", Q->queue[i]); // 데이터가 하나만 있다고 가정하에 front를+1 해서 0번배열에 가지만 } // rear도 0번배열 이기때문에 <= 부호사용해준다. printf("]\n"); } int main() { QueueType *Q1 = createQueue(); element data; printf("insert_A>>"); enQueue(Q1, 'A'); printQ(Q1); printf("insert_B>>"); enQueue(Q1, 'B'); printQ(Q1); printf("delete>>"); deQueue(Q1); printQ(Q1); printf("insert_C>>"); enQueue(Q1, 'C'); printQ(Q1); data = peek(Q1); printf("peek item:%c\n", data); printf("delete>>"); deQueue(Q1); printQ(Q1); printf("delete>>"); deQueue(Q1); printQ(Q1); getchar(); return 0; } | cs |
728x90
'개발하는중 > 자료구조' 카테고리의 다른 글
자료구조_c언어_linkedList (0) | 2021.05.20 |
---|---|
자료구조_c언어_linked (0) | 2021.05.18 |
자료구조_c언어_배열스택_arrayStack_05 (0) | 2021.02.24 |
자료구조_c언어_서클 큐_circleQueue_01 (0) | 2021.02.10 |
자료구조_c언어_배열스택_arrayStack_04 (0) | 2021.02.04 |