Linked List

자료구조

연결 리스트 삭제와 용도 (Linked List)

연결 리스트 삭제와 용도 (Linked List) 연결 리스트에서의 삭제 void remove_stack(node_t** head, int num1) { node_t** p = head; while (*p != NULL) { if ((*p)->num == num1) { node_t* a = *p; *p = (*p)->next; free(a); break; } p = &(*p)->next; } } 매개변수 node_t** head = node_t* head를 참조하기 위한 이중 포인터 매개변수 int num1 = num1에 해당하는 값이 나오면 지운다. * 삭제할 node의 주소를 알고 있다면 시간복잡도 = O(1)이지만 현재 remove_stack은 검색 후 삭제이므로 시간복잡도 = O(n)이다. * 문..

자료구조

연결 리스트 구조와 삽입 (Linked List)

연결 리스트 Linked List 개념 * node라는 구조의 집합니다. * node = 값 + (다음 노드를 향하는 포인터)로 구성되어 있다. [값 + 포인터] 구조가 갖는 장점 * 포인터가 다음 값의 위치를 알고 있으니 배열처럼 메모리가 빈틈없이 연속적일 필요가 없음. = 자료들이 산재해 있다. * 자료들이 여기저기 떨어져 있다면? = 동적 할당 (아닐 수도 있지만 보통 동적) * 연결 리스트에 최대 길이 따윈 없다! = 포인터로 다음 값을 알아낸다 -> 메모리에 값이 분포될 수 있다 -> 최대 크기 설정이 없다 node의 구조 typedef struct node{ int num; struct node* next; }node_t; * 가볍게 보면 어지러울 수 있다. 천천히 구조를 생각하자 * node..

스누징어
'Linked List' 태그의 글 목록