코드의 소스는 아래 링크이며, 처음에 등록된 노드가 앞에 있고, 뒤로 등록된 노드들을 연결함
[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 *queue, int 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 |
'프로그래밍 > C언어' 카테고리의 다른 글
Json C로 Json <-> string 변환 (0) | 2022.07.11 |
---|---|
연결리스트로 스택 만들기 (0) | 2022.07.10 |
Msg Queue (0) | 2022.06.14 |
파일입출력, 라인단위 읽고쓰기 (0) | 2019.07.23 |
directory 내 파일검색 (0) | 2019.07.23 |