본문 바로가기
프로그래밍/C 언어(정리)

C언어] 단순 연결 리스트

by 곰나나 2023. 12. 30.

[단순 연결 리스트]

1. 단순 연결 리스트(Singly Linked List)란?
각 노드가 데이터와 다음 노드를 가리키는 포인터로 이루어진 자료구조. 각 노드는 리스트의 시작에서부터 끝까지 순차적으로 연결되어 있다.

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
// 단순 연결 리스트
#include <stdio.h>
#include <stdlib.h>
 
//& 노드 구조체 정의
typedef struct Node
{
    int data;
    struct Node* next;
} Node;
 
//& 리스트에 노드 추가 함수
Node* insertNode(Node* head, int value)
{
    Node* newNode = (Node*)malloc(sizeof(Node));
    if (newNode == NULL)
    {
        fprintf(stderr, "메모리 할당 실패\n");
        exit(1);
    }
 
    newNode->data = value;
    newNode->next = head;
    head = newNode;
 
    return head;
}// insertNode
 
//& 리스트 출력 함수
void printList(Node* head)
{
    while (head != NULL)
    {
        printf("%d -> ", head->data);
        head = head->next;
    }
    printf("NULL\n");
}// printList
 
//& 리스트 메모리 해제 함수
void freeList(Node* head)
{
    Node* temp;
 
    while (head != NULL)
    {
        temp = head;
        head = head->next;
        free(temp);
    }
}// freeList
 
int main()
{
    //& 초기화: 빈 리스트
    Node* head = NULL;
 
    //& 노드 추가
    head = insertNode(head, 3);
    head = insertNode(head, 7);
    head = insertNode(head, 10);
 
    //& 리스트 출력
    printf("리스트: ");
    printList(head);
 
    //& 메모리 해제
    freeList(head);
 
    return 0;
}
cs

코드에서는 노드를 나타내는 Node 구조체를 정의하고, 리스트의 시작 노드를 가리키는 포인터를 사용했다.

Node 구조체는 각 노드를 표현하고, insertNode 함수는 리스트의 시작에 새로운 노드를 추가. printList 함수는 리스트의 모든 노드를 출력하고, freeList 함수는 리스트의 메모리를 해제했다.

728x90

'프로그래밍 > C 언어(정리)' 카테고리의 다른 글

C언어] 스택  (0) 2024.01.01
C언어] 이중 연결 리스트  (1) 2024.01.01
C언어] 동적 배열  (1) 2023.12.30
C언어] 배열 요소의 삽입, 삭제  (1) 2023.12.30
C언어] 구조체  (1) 2023.12.23