[자료구조]C C++로 작성한 tree order 전위 중위 후위 알고리즘 시간측정과 성능분석
*열*
다운로드
장바구니
소개글
c언어로 작성하였으며트리를 이용하여 inorder(중위) preorder(전위)
postorder(후위) 순회를 하면서 각각 걸리는 시간
을 체크 하고 성능비교
링크드 리스크로 만든 알고리즘과 배열로 만든 알고
리즘의 성능도 비교...시간을 이용하여...
중간중간에 딜레이를 넣어 좀더 정확하게 측정하고자 하였습니다.....
소스에 주석을 달아 놓아서 알아보기 쉽습니다.
이거 소스 짠다고 5일동안 밤샌거 생각하면....ㅠㅜ
텀 프로젝트로 작성하여 만점을 받은바 있습니다.
컴파일 실행환경
c언어로 작성하였으며트리를 이용하여 inorder(중위) preorder(전위)
postorder(후위) 순회를 하면서 각각 걸리는 시간
을 체크 하고 성능비교
링크드 리스크로 만든 알고리즘과 배열로 만든 알고
리즘의 성능도 비교...시간을 이용하여...
중간중간에 딜레이를 넣어 좀더 정확하게 측정하고자 하였습니다
소스에 주석을 달아 놓아서 알아보기 쉽습니다.
이거 소스 짠다고 5일동안 밤샌거 생각하면....ㅠㅜ
텀 프로젝트로 작성하여 만점을 받은바 있습니다.
본문내용
#include <malloc.h>#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_STACK_SIZE 50
//delay 함수 구현
void delay(clock_t sleep)
{
clock_t cur = clock(), el;
for(;;){ // 무한루프를 돌린다.
el = clock(); // 현재까지 프로그램이 실행된 TICK
if((el - cur) > sleep)
break ;
}
}
//트리 선언문
typedef struct node *tree_pointer;
typedef struct node
{
int data;
tree_pointer left_child, right_child;
}node;
tree_pointer ptr = NULL;
tree_pointer stack[MAX_STACK_SIZE]; /* stack to hold pointers */
int top = -1; /* initialize */
//스텍이 비었을 경우
int STACK_EMPTY()
{
if (top < 0)
return (1);
else
return (0);
}
//스텍이 다 찼을 경우
int STACK_FULL()
{
if (top >= MAX_STACK_SIZE)
return (1);
else
return (0);
}
//스텍에 노드를 추가하는 함수
void add(tree_pointer t)
{
if (STACK_FULL()) {
printf("Stack overflows.");
exit(1);
.
.
.
.
.
.
//각 노드를 연결하여 트리 구성
void start_order()
{
tree_pointer one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thirteen,fourteen,fifteen;
ptr=(tree_pointer)malloc(sizeof(node));
one=(tree_pointer)malloc(sizeof(node));
two=(tree_pointer)malloc(sizeof(node));
three=(tree_pointer)malloc(sizeof(node));
four=(tree_pointer)malloc(sizeof(node));
five=(tree_pointer)malloc(sizeof(node));
six=(tree_pointer)malloc(sizeof(node));
seven=(tree_pointer)malloc(sizeof(node));
eight=(tree_pointer)malloc(sizeof(node));
nine=(tree_pointer)malloc(sizeof(node));
ten=(tree_pointer)malloc(sizeof(node));
eleven=(tree_pointer)malloc(sizeof(node));
twelve=(tree_pointer)malloc(sizeof(node));
thirteen=(tree_pointer)malloc(sizeof(node));
fourteen=(tree_pointer)malloc(sizeof(node));
fifteen=(tree_pointer)malloc(sizeof(node));
ptr->data = 1;
ptr->left_child = one;
ptr->right_child = two;
one->data = 3;
one->left_child = three;