작성자: 10212 서윤재
이 코드는 C 언어를 사용하여 단일 연결 리스트(single linked list)를 구현한 것입니다.
여기서는 연결 리스트의 초기화, 노드의 생성과 추가, 꼬리 노드의 삭제, 전체 리스트의 삭제, 그리고 리스트의 시각화까지의 기능을 포함하고 있습니다.
단일 링크드 리스트란?
- 다음 노드에 대한 참조만을 가진 가장 단순한 형태의 연결 리스트이다. 가장 마지막 원소를 찾으려면 리스트 끝까지 찾아가야 하기 때문에, 마지막 원소를 가리키는 참조를 따로 가지는 형태의 변형도 있다. 보통 큐를 구현할 때 이런 방법을 쓴다.
- 가장 마지막 원소를 찾으려면 리스트 끝까지 찾아가야 하기 때문에, 마지막 원소를 가리키는 참조를 따로 가지는 형태의 변형도 있다. 보통 큐를 구현할 때 이런 방법을 쓴다.
- 이 자료구조는 Head 노드 (첫번째 데이터 노드)를 참조하는 주소를 잃어버릴 경우 데이터 전체를 못 쓰게 되는 단점이 있다. 다음 노드를 참조하는 주소 중 하나가 잘못되는 경우에도 체인이 끊어진 양 거기부터 뒤쪽 자료들을 유실한다. 따라서 안정적인 자료구조는 아니다
- 파일 시스템 중 FAT 파일 시스템이 이 단순 연결 리스트로 파일 청크를 연결하는데 그래서 FAT 파일 시스템은 파일 내용 일부가 손상될 경우 파일의 상당 부분을 유실할 수 있고 랜덤 액세스 성능도 낮다.
코드 소개
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
struct node {
int num;
struct node* next;
};
- 노드를 정의합니다. 각 노드는 숫자를 저장하고 다음 노드를 가리키는 포인터를 가집니다.
struct head {
struct node* next;
};