트리에서 자료를 어떻게 얻어올 수 잇을까요?
지금 트리 자료구조와 관련된 프로그래밍 중입니다.
지금 고민중인 문제가 하나 잇어서 고수님들께 질문드립니다.
다름이 아니고, 예를 들어 이진트리에 저장되어 있는 자료들에 대한 접근 문제 인데,
inorder 방식으로 접근하여 key 값이 작은 순서대로 오름차순으로 .txt 파일에 저장 하고 싶습니다.
우선 생각햇던게 inorder함수안에 함수를 정의 해보았지만, 파일 오픈 클로즈를 계속해서 안되고,
나중에 생각한건 inorder를 return 값을 두어서 현재 노드를 반환하여 임시 노드에 저장,
반복문으로 그때의 노드에 관련된 값들을 fprintf 로 저장이였습니다.
하지만 이것또한 안되 더군요..
우선,,
생각해보니,,
이진트리에 넣어 져 있는 자료를 inorder 방식으로 접근하여
배열에 집어 넣는다고 하면 어떤방법을 써야 하는지 부터 막히는 군요..
혹시 아시는 분들은 조금이나마 조언 부탁드립니다..
아래는 임시로 제가 짜고 잇는 코드의 부분입니니다..
void cls_search(tree root)
{
int i;
tree temp = NULL;
char filename[20];
FILE *fp;
printf("출력파일의 이름을 입력하세요(byname.txt/bynum.txt) : ");
gets(filename);
fp = fopen(filename,"w");
if(fp == NULL)
{
printf("파일 저장 에러..\n");
return;
}
for(i=0;i<30; i++){
temp = (tree)malloc(sizeof(struct _tree));//temp 노드 동적할당후 초기화
temp->num = 0;
temp->name[10]='\0';
temp->mid_score = 0;
temp->end_score = 0;
temp->hw_score = 0;
temp->leftchild = temp->rightchild = NULL;
temp = inorder2(root);
fprintf(fp,"%d %s %d %d %d\n",temp->num,temp->name,temp->mid_score,temp->end_score,temp->hw_score);
}
printf("파일 출력이 완료 되었습니다.\n");
fclose(fp);
}
tree inorder2(tree temp)//inorder방식 임시 출력
{
if(temp)
{
inorder2(temp->leftchild);
cur = temp;
//fprintf(fp,"%d %s %d %d %d\n",temp->num,temp->name,temp->mid_score,temp->end_score,temp->hw_score);
inorder2(temp->rightchild);
}
return cur;
}
포인터로 저장할
포인터로 저장할 대상 배열과 카운터로 쓸 변수를 받아서 쓰면 될것 같습니다.
댓글 달기