본문 바로가기

잡다한 IT/자료구조

연결리스트를 통한 큐 구현

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