반응형 C, C++/과제창고3 [C] 단일연결리스트 합병정렬 (singly linked list merge sort) 합병정렬에 관한 포스팅은 따로 알고리즘 창고에 하겠습니다. 보통 배열로 이루어진 정렬만 해서 애를 먹었습니다. 특히 분할하는 부분에서 힘들었는데, 그래도 깔끔한 방법을 찾아내 만들었습니다. 구조체 및 함수설명 NODE : 단일연결리스트를 구성하는 노드 구조체 TMP : partition 함수를 위한 구조체. 두 개의 반환값을 받아내기 위함 NODE* addNode(int n) : 노드를 추가하는 함수. 단일연결리스트 끝부분에 계속 붙여나가므로 새 노드 값의 next는 항상 NULL이다. void mergeSort(NODE **L, int k) : 합병정렬함수. 재귀방식으로 구성돼있다. L은 리스트의 시작 주소, k는 리스트의 크기이다. NODE* merge(NODE *L1, NODE *L2) : 합병함수.. 2018. 10. 14. [C] 학교과제_황제노드찾기 학교과제로 풀었던 황제노드찾기. 내부노드를 한 번 씩만 방문해 황제노드를 판별하는 방식이다. 순회 방식은 레벨순회이다. 황제노드 - 자신은 로만노드가 아니지만 자기 아래 자손들이 모두 로만노드인 노드로만노드 - 자신의 오른쪽과 왼쪽 부트리의 노드 개수 차이가 5 이하인 노드 구글링 해도 황제, 로만노드의 개념이 나오지 않는 것을 보면 교수님이 고안해내신 개념인 것 같다. #include #include #include #include typedef struct node { struct node *left; struct node *right; }NODE; typedef struct { NODE *root; }TREE; // 각 노드의 좌,우 자식 유무에 대한 정보를 담은 함수. initNode를 편리하게 .. 2018. 7. 1. [C] YesOrNo 아키네이터 예전에 C로 구현한 파일입출력 기반의 Yes or No 아키네이터이다. 컴퓨터가 모르는 부분에 다다르면 직접 사용자가 알려줄 수 있다. #include #include #include typedef struct node { char *obj_name; char *question; struct node *yes_ptr; struct node *no_ptr; } Node; void nodePrint(Node *n);// 노드의 정보를 출력하며 게임을 진행하는 함수 void treeSave(Node *n);// 트리의 정보를 텍스트 파일에 저장하는 함수 Node * treeRead(Node *n);// 텍스트 파일에서 트리의 정보를 읽어 저장하는 함수 (트리 초기화) Node * insertNode(Node .. 2018. 6. 27. 이전 1 다음 반응형