본문 바로가기

전체 글

Adjacency List 다음과 같이 파일 입력을 통해 무방향 그래프(undirected graph)나 방향 그래프(directed graph)를 인접리스트(adjacency-list)로 구성하는 프로그램을 작성하시오. (입력파일의 첫 줄은 그래프 종류 (u : undirected graph, d : directed graph), 정점 (vertex) 수와 간선(edge)의 수를 나타냄, 정점을 나타내는 숫자는 0부터 시작됨) u 4 6 0 1 0 2 0 3 1 2 1 3 2 3 그래프 종류, 정점, 간선의 수를 파일에서 입력받음 그래프 종류에 따라 간선을 하나씩 입력받으면서 인접리스트를 구성함. (입력 되는 노드는 항상 헤더노드가 가리키는 처음 노드로 입력되게 함, 항상 리스트의 앞에 노드를 삽입) 각 정점에 대해 인접하고 있.. 더보기
Winner Tree [승자트리를 이용한 정렬] 10개의 정수형 원소로 구성된 k 개의 run에 대하여 승자트리 (winner tree)를 이용하여 정렬을 수행하라. 이때 k는 2의 누승 ( power of 2 )임을 가정하 라. 단 승자는 키 값이 작은 노드이다. 난수생성을 위한 seed와 k를 입력받는다. k x 10의 2차원 배열을 생성한 뒤 정렬을 수행한다. 1~500 사이에서 발생시킨 k 개의 난수를 key로 사용하여 각 레코드에 k부터 k+9까지의 숫자를 순서대로 배열에 저장한다.(각 key는 중복 가능하다.) 생성한 키 데이터에 대해 초기 승자트리를 구성한다. 승자트리를 사용한 정렬을 수행한다. 최소키를 sorted 배열에 저장 -> 최소키가 최종 승자로 선택된 레코드에는 다음 키 값으 로 nums 배열의 값을 .. 더보기
Binary Search Tree 다음과 같이 임의의 노드 n개로 구성된 이진탐색트리(binary search tree)를 생성하여 아래와 같이 실행하도록 프로그램을 작성하라. 난수생성을 위한 seed와 이진탐색트리의 노드 개수(n)를 입력받음 printf("random number generation (1 ~ %d)\n", MAX_SIZE); printf("%s", "the number of nodes in BST (less than and equal to 50) : "); scanf_s("%d", &n); printf("%s", "seed : "); scanf_s("%u", &seed); printf("\ncreating a BST from random numbers\n"); srand(seed); 1~500 범위의 난수를 생성하여 .. 더보기
Min Heap 다음 입력파일의 데이터를 사용하여 최소히프(Min Heap)에 대한 실습을 수행한다. 10 40 30 5 12 6 15 9 60 ① 파일입력을 받으면서 최소히프를 구성한다. (최대 입력 개수는 80개로 제한한다.) 매 입력마다, 구성된 최소히프의 배열원소를 인덱스 순서대로 출력한다. ② 최소히프의 최소값을 연속으로 원소개수만큼 삭제한다. 매 삭제마다, 재구성된 최소히프의 배열원소를 인덱스 순서대로 출력한다. #include #include #include enum { FILE_OPEN_ERROR }; #define NAME(a) #a #define CATCH(ERROR) do{printf(NAME(ERROR));exit(0);}while(false) #define SWAP(type,x,y) do{type.. 더보기
Max Heap 다음 입력파일의 데이터를 사용하여 최대히프(Max Heap)에 대한 실습을 수행한다. 10 40 30 5 12 6 15 9 60 ① 파일입력을 받으면서 최대히프를 구성한다. (최대 입력 개수는 80개로 제한한다.) 매 입력마다, 구성된 최대히프의 배열원소를 인덱스 순서대로 출력한다. ② 최대히프의 최대값을 연속으로 원소개수만큼 삭제한다. 매 삭제마다, 재구성된 최대히프의 배열원소를 인덱스 순서대로 출력한다. #include #include #include enum { FILE_OPEN_ERROR }; #define NAME(a) #a #define CATCH(ERROR) do{printf(NAME(ERROR));exit(0);}while(false) #define SWAP(type,x,y) do{type.. 더보기
명제식 이진트리 postfix expression의 명제식을 파일로부터 입력받는다. 이 명제식을 참으로 만들기 위해 입력 되는 변수에 대한 모든 경우의 값을 구하시오. 단 프로그램의 편의를 위해 입력되는 변수는 3개로 한다. ab~&a~c&|c~| 피연산자(Operands) : 'a', 'b', 'c' 연산자(Operators) : & | ~ 최대 입력 문자열 길이 : 80 #include #include #include enum { FILE_OPEN_ERROR, MEMORY_ALLOCATION_ERROR }; #define NAME(a) #a #define CATCH(ERROR) do{printf(NAME(ERROR));exit(0);}while(false) #define CALLOC(type,data_num,ptr).. 더보기
Binary Tree 후위표현식(postfix expression)을 입력받아 이진트리를 구성한 후, 이진트리 순회를 통해 중위표현식(infix expression), 전위표현식(prefix expression), 후위표현식(postfix expression)을 출력하는 프로그램을 작성하라. - 입력파일(input.txt) : AB/C*D*E+ - 피연산자(Operands) : 알파벳 한 글자 - 연산자(Operators) : +, -, *, /, % 이진트리 전위순회를 통해 전위표현식(prefix expression)을 출력한다. 이진트리 중위순회를 통해 중위표현식(infix expression)을 출력한다. 이진트리 후위순회를 통해 후위표현식(postfix expression)을 출력한다. #include #include.. 더보기
Complete Binary Tree with Queue [큐를 이용한 완전이진트리 생성] 파일입력을 받아 다음과 같은 완전이진트리(complete binary tree)를 구성하여, 이진트리 순회방법 중 중위순회, 전위순회, 후위순회를 통해 출 력하는 프로그램을 작성하라. ABCDEFGHI #include #include #include enum{ FILE_OPEN_ERROR, MEMORY_ALLOCATON_ERROR }; #define NAME(a) #a #define CATCH(ERROR) do{printf(NAME(ERROR));exit(0);}while(false) #define CALLOC(type,data_num,ptr) do{if(!(ptr=(type*)calloc(data_num,sizeof(type)))){CATCH(MEMORY_ALLOCAT.. 더보기