[c] 배열과 다양한 데이터 구조
프로그래밍에서 배열은 여러 데이터 항목을 담는 데 사용되는 자료 구조입니다. 하나의 변수명을 사용하여 여러 개의 항목을 저장하고, 각 항목은 인덱스로 접근할 수 있습니다.
배열
배열의 선언
int numbers[5]; // 5개의 정수를 저장할 배열 선언
배열의 초기화
int numbers[5] = {1, 2, 3, 4, 5}; // 배열을 선언과 동시에 초기화
배열의 접근
printf("%d", numbers[2]); // 배열의 세 번째 항목에 접근
리스트
리스트는 동적으로 크기가 조절되는 데이터 구조로, 배열의 단점을 보완합니다. C 언어에서는 리스트를 구현하기 위해 포인터와 메모리 동적 할당을 사용합니다.
연결 리스트
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* head = NULL;
연결 리스트의 삽입
void insert(Node** head_ref, int new_data) {
Node* new_node = (Node*)malloc(sizeof(Node));
new_node->data = new_data;
new_node->next = *head_ref;
*head_ref = new_node;
}
연결 리스트의 삭제
void deleteNode(Node** head_ref, int key) {
Node* temp = *head_ref, *prev;
if (temp != NULL && temp->data == key) {
*head_ref = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return;
prev->next = temp->next;
free(temp);
}
스택과 큐
- 스택: 후입선출(LIFO) 원칙에 따라 데이터를 저장하는 자료구조
- 큐: 선입선출(FIFO) 원칙에 따라 데이터를 저장하는 자료구조
해시 테이블
해시 테이블은 키-값 쌍으로 데이터를 저장하는 데 사용되며, 빠른 검색을 지원합니다. 충돌을 해결하기 위해 해시 함수와 적절한 충돌 해결 방법을 사용합니다.
참고 자료
- “자료구조론”, Mark Allen Weiss, 데이터산업진흥원, 2018.
- “C언어로 쉽게 풀어쓴 자료구조”, 윤성우, 오렌지미디어, 2015.