프로그래밍/C언어

연결 리스트로 큐 생성

mi-nos 2022. 7. 10. 20:13

코드의 소스는 아래 링크이며, 처음에 등록된 노드가 앞에 있고, 뒤로 등록된 노드들을 연결함 

 

https://ehpub.co.kr/c%EC%96%B8%EC%96%B4-%EC%86%8C%EC%8A%A4-%EC%8A%A4%ED%83%9D%EC%9D%84-%EC%97%B0%EA%B2%B0%EB%A6%AC%EC%8A%A4%ED%8A%B8%EB%A1%9C-%EA%B5%AC%ED%98%84/

 

[C언어 소스] 스택을 연결리스트로 구현 – 언제나 휴일

안녕하세요. 언제나 휴일입니다. 이번에는 스택(STACK)을 연결리스트로 구현하는 소스 코드입니다. 스택은 자료를 한쪽으로 보관하고 꺼내는 LIFO(Last In First Out) 방식의 자료구조입니다. 스택에 자

ehpub.co.kr

 

 

 

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
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct node {
    int data;
    struct node *next;
}Node;
 
typedef struct queue {
    Node *front
    Node *rear; 
    int count;
}Queue;
 
void InitQueue(Queue *queue){
    queue->front = queue->rear = NULL
    queue->count = 0;
}
 
int IsEmpty(Queue *queue){
    return queue->count == 0;    
}
 
void Enqueue(Queue *queueint data){
 
    Node *now = (Node *)malloc(sizeof(Node)); 
    now->data = data;
    now->next = NULL;
 
    if (IsEmpty(queue)) {
        queue->front = now;
    }else {
        queue->rear->next = now;
    }
 
    queue->rear = now;
    queue->count++;
}
 
int Dequeue(Queue *queue) {
    int re = 0;
    Node *now;
 
    if (IsEmpty(queue)) {
        return re;
    }
 
    now = queue->front;
    re = now->data;
    queue->front = now->next;
    free(now);
    queue->count--;
    return re;
}
 
int main(void)
{
    int i;
    Queue queue;
    InitQueue(&queue);
    for (i = 1; i <= 5; i++) {
        Enqueue(&queue, i);
    }
 
    while (!IsEmpty(&queue)) {
        printf("%d ", Dequeue(&queue));
    }
 
    printf("\n");
    return 0;
}
 
 
cs