免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: liec
打印 上一主题 下一主题

[C] 请大家帮我看看这个二叉树的问题出在哪里啊? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-03-15 21:15 |只看该作者
现在改好了,自己试了下,不知道是不是还有问题。
谢谢各位!

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. typedef struct Tnode {
  4.         struct Tnode * left;
  5.         struct Tnode * right;
  6.         int tag;
  7.         char data;
  8. }* node;

  9. void CreateBintree(node Lnode)
  10. {
  11.         char e;
  12.         e = getchar();
  13.         getchar();
  14.         if (e == '.') {
  15.                 Lnode -> tag = 0;
  16.                 printf ("Lnode tag : %d \n", Lnode -> data);
  17.                 return;
  18.         }
  19.         else Lnode -> tag = 1;
  20.         Lnode -> data = e;
  21.         printf ("Lnode.data : %c\n", Lnode -> data);
  22.         Lnode -> left = (node) malloc (sizeof(struct Tnode));
  23.         CreateBintree(Lnode -> left);
  24.         printf ("Create left\n");
  25.         Lnode -> right = (node) malloc (sizeof(struct Tnode));
  26.         CreateBintree(Lnode -> right);
  27.         printf ("Create right\n");
  28.         return;
  29. }
  30.        
  31. void PreBintree(node Lnode)
  32. {
  33.         if (!Lnode->tag) return;
  34.         printf (" %c ",Lnode -> data);
  35.         PreBintree(Lnode -> left);
  36.         PreBintree(Lnode -> right);
  37.         return;
  38. }

  39. void MidBintree(node Lnode)
  40. {
  41.         if (!Lnode->tag) return;
  42.         PreBintree(Lnode -> left);
  43.         printf (" %c ",Lnode -> data);
  44.         PreBintree(Lnode -> right);
  45.         return;
  46. }

  47. void PastBintree(node Lnode)
  48. {
  49.         if (!Lnode->tag) return;
  50.         PreBintree(Lnode -> ritht);
  51.         PreBintree(Lnode -> left);
  52.         printf (" %c ",Lnode -> data);
  53.         return;
  54. }

  55. int main (void)
  56. {
  57.         char * hello="Hello,World! Now , It is bintree!";
  58.         printf ("%s\n",hello);
  59.         node Bintree = (node) malloc (sizeof(struct Tnode));
  60.         printf ("malloc Bintree complete! \n");
  61.         CreateBintree(Bintree);
  62.         printf ("\nPre Order:\t");
  63.         PreBintree(Bintree);
  64.         printf ("\nMid Order:\t");
  65.         MidBintree(Bintree);
  66.         printf ("\nPast Order:\t");
  67.         PastBintree(Bintree);
  68.         printf ("\n");
  69.         return 0;
  70. }
复制代码

论坛徽章:
0
12 [报告]
发表于 2008-03-17 09:18 |只看该作者
形参的改变不能影响到实参,在实参CreateBintree(&Bintree);的时候传递指针的地址,在形参中用二级指针接收就可以了。
void CreateBintree(node *Lnode).

论坛徽章:
0
13 [报告]
发表于 2008-03-17 10:52 |只看该作者
楼主需要先把c语言学好,然后再来写这个程序。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP