[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);
}

스택과 큐

해시 테이블

해시 테이블은 키-값 쌍으로 데이터를 저장하는 데 사용되며, 빠른 검색을 지원합니다. 충돌을 해결하기 위해 해시 함수와 적절한 충돌 해결 방법을 사용합니다.

참고 자료

  1. “자료구조론”, Mark Allen Weiss, 데이터산업진흥원, 2018.
  2. “C언어로 쉽게 풀어쓴 자료구조”, 윤성우, 오렌지미디어, 2015.