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 | #include<stdio.h> #include<stdlib.h> typedef struct Node { int data; Node* next; }Node; typedef struct Queue{ int size; Node* front; Node* back; }Queue; //연결리스트 큐에서 큐가 비어있을때/ 비어있지 않을 때 나눠서 구현 void push(Queue* q,int data) { Node* New = (Node*)malloc(sizeof(Node)); New->data = data; New->next = NULL; if (q->size == 0) { q->front = q->back = New; } else { q->back->next = New; q->back = New; } q->size++; } //연결리스트 큐에서 큐가 비어있을 때, 비어있지 않을 때로 나눠서 구현 void pop(Queue* q) { Node* New = (Node*)malloc(sizeof(Node)); New->data = NULL; New->next = NULL; if (q->size == 0) { printf("QUEUE IS EMPTY\n"); return; } else { New = q->front; q->front = q->front->next; } printf("%d IS POPPED\n", New->data); free(New); q->size--; } void print(Queue* q) { Node* New = (Node*)malloc(sizeof(Node)); for (New = q->front; New != NULL;) { printf("%d -> ", New->data); New = New->next; } printf("NULL\n"); } int main(void) { Queue q; q.front = NULL; q.back = NULL; q.size = 0; int ch = -1; while (ch != 0) { printf("\n\n"); printf("하고싶은 명령을 입력하세요:\n"); printf("0번:종료 1번: push 2번: pop 3번:print \n"); scanf("%d", &ch); switch (ch) { case 1: int d; printf("삽입할 데이터를 입력하세요\n"); scanf("%d", &d); push(&q, d); break; case 2: pop(&q); break; case 3: print(&q); break; case 4: break; case 5: break; case 6: break; case 7: break; case 8: break; default: break; } } return 0; } | cs |
반응형
'잡다한 IT > 자료구조' 카테고리의 다른 글
Sort , Search (0) | 2018.05.07 |
---|---|
연결 리스트로 완전 이진 탐색(BST) 구현 (0) | 2018.04.24 |
연결리스트를 통한 스택 구현 (0) | 2018.04.24 |
링크드 리스트 구현 (0) | 2018.04.23 |
배열을 이용한 스택 (0) | 2018.04.22 |