트리에서 자료를 어떻게 얻어올 수 잇을까요?

lord1214의 이미지

지금 트리 자료구조와 관련된 프로그래밍 중입니다.

지금 고민중인 문제가 하나 잇어서 고수님들께 질문드립니다.

다름이 아니고, 예를 들어 이진트리에 저장되어 있는 자료들에 대한 접근 문제 인데,
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;
}

JuEUS-U의 이미지

포인터로 저장할 대상 배열과 카운터로 쓸 변수를 받아서 쓰면 될것 같습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.