C/자료구조와 알고리듬16 Chapter 08. 연결 리스트(Linked List) 0. 연결리스트 - 연결되지 않은 메모리를 사용함. 배열과 정반대의 장단점. 이때문에, 중간 삽입 중간 삭제가 아주 쉬움. - 단점은 N번째 방을 바로 찾을수가 없음. 배열과 다름. 즉, Random Access가 불가능함. 1. 기본 코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include enum { FALSE = 0, TRUE = 1, INVALID_INDEX = -1 }; typedef struct node { int nData; struct node* pNext; /* struct node_t* 라고 적으면 안됨. */ } node_t; void destroy(node_t* _pHeadNode); void recursively_destroy(.. 2021. 11. 12. Chapter 07. 큐(Queue) 3.1 기본코드 #define _CRT_SECURE_NO_WARNINGS #include #include enum { FALSE = 0, TRUE = 1, INVALID_INDEX = -1, MAX_COUNT = 6 }; typedef struct queue { int nArray[MAX_COUNT]; size_t uCount; size_t uFront; size_t uBack; } queue_t; void enqueue(queue_t* _pQueue, int _nData); int is_empty(queue_t* _pQueue); int dequeue(queue_t* _pQueue); void print(queue_t* _pQueue); int main(void) { size_t i; queue_t q.. 2021. 11. 10. Chapter 06. 스택(Stack) 2.1 스택 기본 코드 #define _CRT_SECURE_NO_WARNINGS #include #include enum { FALSE = 0, TRUE = 1, INVALIED_INDEX = -1, MAX_COUNT = 100001 }; typedef struct stack { int nArray[MAX_COUNT]; size_t uTop; } stack_t; void push(stack_t* _pStack, int _nData); int isEmpty(stack_t* _pStack); int pop(stack_t* _pStack); int main(void) { return 0; } void push(stack_t* _pStack, int _nData) { assert(_pStack->uTop < M.. 2021. 11. 10. Chapter 05. 가변 길이 배열(Variadic Array) 0. 가변 길이 배열 특징 - 사용할 메모리의 크기를 추가/축소가 가능함. 다만, 데이터를 이동(복붙)해야 하기에 오버헤드 발생. - 그래서 추가로 필요한 양보다 1.5배 정도 더 많이 할당받음. 그럼 나중에 더 필요하더라도 데이터 이동 횟수가 줄어듦. - 그래도 배열이기에, 중간 삽입 및 중간 삭제가 비효율적임. 중간에 삽입하면 밀어버리거나, 삭제하면 당겨와야하기 때문에. 1. 기본 코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include enum { FALSE = 0, TRUE = 1, INVALIDE_INDEX = -1, INITIAL_CAPACITY = 8, INCREMENT = 2 }; typedef struct variadic_array {.. 2021. 11. 10. 이전 1 2 3 4 다음