| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1999 人关注过本帖
标题:程序运行不出来,
只看楼主 加入收藏
相思豆
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-10-25
结帖率:50%
收藏
已结贴  问题点数:11 回复次数:3 
程序运行不出来,
#include"stdio.h"
#include"malloc.h"
typedef  char elemtype;
typedef struct BiTNode
{
elemtype data;
 struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

int createBiTree(BiTree T) {
   char ch;
   scanf(&ch);
    if (ch=='#') T = NULL;
    else{
   
    T=(struct BiTNode *)malloc(sizeof(struct BiTNode));
   
      T->data = ch;              // Éú³É¸ù½áµã
      createBiTree(T->lchild);   // ¹¹Ôì×ó×ÓÊ÷
      createBiTree(T->rchild);   // ¹¹ÔìÓÒ×ÓÊ÷
    }
return 1;} // CreateBiTree

int count=0;
int countPreorder (BiTree T)
{ // ÏÈÐò±éÀú¶þ²æÊ÷
   if (T) {
       count++;
        // ·ÃÎʽáµã
      countPreorder(T->lchild);    // ±éÀú×ó×ÓÊ÷
      countPreorder(T->rchild);   // ±éÀúÓÒ×ÓÊ÷
   }
return count;
}
int  Preorder (BiTree T,elemtype x)
{ // ÏÈÐò±éÀú¶þ²æÊ÷
   if (T) {
      if(T->data==x)
          printf("%c",T->data);
        // ·ÃÎʽáµã
      Preorder(T->lchild,x);    // ±éÀú×ó×ÓÊ÷
      Preorder(T->rchild,x);   // ±éÀúÓÒ×ÓÊ÷
   }
return 1;
}

int yeziPreorder (BiTree T)
{ // ÏÈÐò±éÀú¶þ²æÊ÷
    int n=0;
   if (T) {
     if(!T->lchild&&!T->rchild)
        // ·ÃÎʽáµã
     {    count++;
     yeziPreorder(T->lchild);    // ±éÀú×ó×ÓÊ÷
      yeziPreorder(T->rchild);   // ±éÀúÓÒ×ÓÊ÷
   }
   }
return n;
}
int depth(BiTree T)
{
int ldepth,rdepth;
ldepth=depth(T->lchild);
rdepth=depth(T->rchild);
return (ldepth>rdepth?ldepth+1:rdepth+1);
}
int main()
{

BiTree T;   
 createBiTree(T);
 int t1=countPreorder (T);
 printf("%d",t1);
Preorder (T,'A');
int t2=yeziPreorder (T);
 printf("%d",t2);
int t3=depth(T);
printf("%d",t3);
return 0;
}
搜索更多相关主题的帖子: include 
2016-11-09 18:01
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:11 
基础不牢,地动山摇
程序代码:
#include"stdio.h"
#include"malloc.h"
typedef  char elemtype;
typedef struct BiTNode
{
elemtype data;

 struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

int createBiTree(BiTree T) {//题主不会以为这样就可以修改到main中的T的值吧?你们老师没说C语言传参是传值的吗
   char ch;
   scanf(&ch);
    if (ch=='#') T = NULL;
    else{
  

    T=(struct BiTNode *)malloc(sizeof(struct BiTNode));
  

      T->data = ch;              // Éú³É¸ù½áµã
      createBiTree(T->lchild);   // ¹¹Ôì×ó×ÓÊ÷
      createBiTree(T->rchild);   // ¹¹ÔìÓÒ×ÓÊ÷
    }
return 1;} // CreateBiTree
int main()
{

BiTree T;  


 createBiTree(T);

return 0;
} 
给你一个类似的代码看看,希望你能明白
程序代码:
#include<stdio.h>//用双引号和用尖括号的含义可是略有不同哦
void fun(int a)(a=2;)
void fun2(int*a){*a=3;}
int main()
{
int a=1;
fun(a);
printf("%d",a);
fun2(&a);
printf("%d",a);
return 0;
} 

----------------------应该还有其他问题,由于时间关系我就不去一一指出了。向这种长度的代码完全可以每写完一个函数(功能模块)就单独给他测试一下,看看运行效果和预期的是否一致。不能等七七八八写了一大堆了才调试。那样会很头疼。




φ(゜▽゜*)♪
2016-11-09 23:24
相思豆
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-10-25
收藏
得分:0 
回复 2楼 书生牛犊
谢谢,代码自己改过来了,你的意思我不太明白。
#include"stdio.h"
#include"malloc.h"
typedef  char elemtype;
typedef struct BiTNode
{
elemtype data;
 struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree  createBiTree(BiTree T) {
   char ch;
   ch=getchar();
    if (ch=='#') T = NULL;
    else{
   
    T=(BiTNode *)malloc(sizeof(BiTNode));
   
      T->data = ch;              
    T->lchild=  createBiTree(T->lchild);   
     T->rchild= createBiTree(T->rchild);   
    }
return T;} // CreateBiTree

int count=0;
int countPreorder (BiTree T)
{ // ÏÈÐò±éÀú¶þ²æÊ÷
   if (T) {
       count++;
        
      countPreorder(T->lchild);   
      countPreorder(T->rchild);  
   }
return count;
}
int  Preorder (BiTree T,elemtype x)
{
   if (T) {
      if(T->data==x)
          printf("%c",T->data);
        
      Preorder(T->lchild,x);   
      Preorder(T->rchild,x);   
   }
return 1;
}
int n=0;
int yeziPreorder (BiTree T)
{
   
   if (T) {
     if(!T->lchild&&!T->rchild)
        
         n++;
     yeziPreorder(T->lchild);   
      yeziPreorder(T->rchild);  
   
   }
return n;
}
int depth(BiTree T)
{
int ldepth,rdepth;
if(!T)
return 0;
ldepth=depth(T->lchild);
rdepth=depth(T->rchild);
return (ldepth>rdepth?ldepth+1:rdepth+1);
}
int main()
{

BiTree T=0;   
 T=createBiTree(T);
 int t1=countPreorder (T);
 printf("二叉树节点的个数是:\n");
 printf("%d\n",t1);
Preorder (T,'A');
int t2=yeziPreorder (T);
printf("叶子节点的个数是:\n");
 printf("%d\n",t2);
int t3=depth(T);
printf("二叉树的深度是:\n");
printf("%d\n",t3);
return 0;
}








2016-11-10 17:32
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
这段代码你看看,能不能看明白fun2()为什么能成功修改a的值而fun()不能。
程序代码:
#include<stdio.h>
void fun(int a)(a=2;)
void fun2(int*a){*a=3;}
int main()
{
int a=1;
fun(a);
printf("%d",a);
fun2(&a);
printf("%d",a);
return 0;
}




φ(゜▽゜*)♪
2016-11-11 16:00
快速回复:程序运行不出来,
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018901 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved