[단순 연결 리스트]
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 |