정렬함수를 어떻게 추가 시켜야 할까요...
훌림목
질문 제목 : 정렬함수를 어떻게 추가 시켜야 할까요...질문 내용 : 지금은 일단 입력하고 출력함수까지 나타냈습니다
#include stdio.h
#includestdlib.h
#define max_size 8
typedef struct tree
{
char tree_array[max_size];
}tree;
void input(tree *p);
void output(tree *p);
int main()
{
tree t[max_size];
input(t);//입력함수 호출
output(t);//출력함수 호출
return 0;
}
void input(tree *p)
{
int i;
int bunho;
for(i=0; imax_size; i++)
{
system(cls);
printf(\n\n트리 입력\n);
bunho=i;
printf([%d번째트리]\n,bunho);
printf(트리 : );
scanf(%s,&(p+i)-tree_array);
fflush(stdin);
}
}
void output(tree *p)
{
int i;
for(i=0; imax_size; i++)
{
printf(%s ,(p+i)-tree_array);
}
}여기까지는 했고요 여기에 정렬함수를 추가 시켜야거든요
추가 시킬 함수가 자료구조 트리에서 중위순회를 하는건데요
void inorder(int index)
{
if(tree_array[index] == 0 || index max_size) return;
inorder(index * 2);
printf(%c , tree_array[index]);
inorder(2*index + 1);
}
기존에 있던게 이건데;; 이걸 위에있는 코드에 넣을려니까 계속 안되더라고요
구조체를 추가 시키면서 변수 지정을 못하는거 같은데;;
어떻식으로 하면 되나요
-
새솔
아...그럼 구조체가 있을때는 변수지정을 어떻게 하면 될까요?
-
SweetChoco
0번배열부터 사용을하면 0*2 는 0이므로 0의 왼쪽트리가 0번이라는 오류가 나옵니다. Maxsize 를 +1 한후 1부터 배열사용하세요. 아니면 아예 트리안에 왼쪽오른쪽 트리를 넣어주는방법이 있습니다