| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 888 人关注过本帖
标题:改有错误的程序
只看楼主 加入收藏
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
改有错误的程序
#include "stdio.h"
#include"stdlib.h"
typedef char TElemType;

typedef struct bitree{
    TElemType data;
    struct bitree *lchild,*rchild;
}BiTNode,*BiTree;

BiTree Create_Tree(){
    BiTree T;
    char a;
    scanf("%s",&a);
    if(a=='#') T=NULL;
    else{
    T=(BiTNode*)malloc(sizeof(BiTNode));
    T->data=a;
    printf("输入左孩子的值\n");
    T->lchild=Create_Tree();
    printf("输入右孩子的值\n");
    T->rchild=Create_Tree();
    }
    return T;
   
}
Status PreOrderTraverse(BiTree T,Status( * Visit)(TElemType e))
{
if(T!=NULL){
   if(Visit(T->data))
      if(PreOrderTraverse(T->lchild,Visit))
         if( PreOrderTraverse(T->rchild,Visit))
         return 0;
}else return 1;  
}
Status PrintElement(TElemType e)
{printf(e);
    return 1;
}   
void InOrderTraverse(BiTree T){
    if(T!=NULL){
        InOrderTraverse(T->lchild);
        Printf("%c_  ",T->data);
        InOrderTraverse(T->rchild);}
}
void PostOrderTraverse(BiTree T){
    if(T!=NULL){
        PostOrderTraverse(T->lchild);        
        PostOrderTraverse(T->rchild);
        Printf("%c_  ",T->data);}
   
}
void LevelOrder(BTNode *bt) /*层次遍历二叉树bt*/   
    { BTNode* queue[MAXSIZE];
      int front,rear;
      if (bt==NULL) return;
      front=0;      /*非循环队列*/
      rear=0;
      queue[rear++]=bt;
      while(front!=rear)
          {printf("%c",queue[front]->cdata);        /*访问队首结点的数据域*/
             if (queue[front]->lchild!=NULL)   /*将队首结点的左孩子指针入队列*/
             {  queue[rear]=queue[front]->lchild;rear++;
             }
            if (queue[front]->rchild!=NULL)   /*将队首结点的右孩子指针入队列*/
            {  queue[rear]=queue[front]->rchild; rear++;
         }
      front++;
   } /* while */
}/* LevelOrder*/
main(){
    BiTree root;
    root=Create_Tree();
    printf("\n先序遍历");
    PreOrderTraverse(root);
    printf("\n中序遍历");
    InOrderTraverse(root);
    printf("\n后序遍历");
    PostOrderTraverse(root);
    printf("\n层次遍历");
    PostOrderTraverse(root);
   
    }
此程序有几处错误,帮我改改
搜索更多相关主题的帖子: include return 
2010-12-08 22:45
渊奇绝
Rank: 2
来 自:江苏
等 级:论坛游民
威 望:3
帖 子:9
专家分:36
注 册:2010-12-5
收藏
得分:0 
程序怎么都这么长呢?
2010-12-08 22:47
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
就是二叉树遍历
2010-12-08 22:50
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
伟大的斑竹呢
2010-12-08 22:51
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
怎么没人啊呢
2010-12-09 08:35
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
求助版主
2010-12-09 08:53
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:20 
多模块的
就一个模块一个模块地调试实现 把模块不相关的注释掉
Status PreOrderTraverse(BiTree T,Status( * Visit)(TElemType e))中的
            MAXSIZE
Status 返回类型

Status PreOrderTraverse(BiTree T,Status( * Visit)(TElemType e))函数的定义和在主函数的调用格式
   /* printf("\n先序遍历");
    PreOrderTraverse(root);*/

Status PrintElement(TElemType e)函数体
        printf(e);

这些都是错误 应该在编译的时候能够暴露出来

#include "stdio.h"
#include "stdlib.h"

#define MAXSIZE 215

typedef char TElemType;
typedef int Status;

typedef struct bitree
{
    TElemType data;
    struct bitree *lchild,*rchild;
}BiTNode, *BiTree;

BiTree Create_Tree()
{
    BiTree T;
    char a;
    scanf("%s",&a);
    if(a=='#')
        T=NULL;
    else
    {
        T= (BiTNode*) malloc (sizeof(BiTNode));
        T->data = a;
        printf("输入左孩子的值\n");
        T->lchild = Create_Tree();
        printf("输入右孩子的值\n");
        T->rchild = Create_Tree();
    }

    return T;
}

void PreOrderTraverse(BiTree T)
{
    if(T!=NULL)
    {
        printf("%c_  ",T->data);
        PreOrderTraverse(T->lchild);
        PreOrderTraverse(T->rchild);
    }
}

Status PrintElement(TElemType e)
{
    printf("%c", e);

    return 1;
}   
void InOrderTraverse(BiTree T)
{
    if(T!=NULL)
    {
        InOrderTraverse(T->lchild);
        printf("%c_  ",T->data);
        InOrderTraverse(T->rchild);
    }
}
void PostOrderTraverse(BiTree T)
{
    if(T!=NULL)
    {
        PostOrderTraverse(T->lchild);        
        PostOrderTraverse(T->rchild);
        printf("%c_  ",T->data);
    }  
}
void LevelOrder(BiTNode *bt) /*层次遍历二叉树bt*/   
{
    BiTNode* queue[MAXSIZE];
    int front,rear;
    if (bt==NULL)
        return;
     front=0;      /*非循环队列*/
     rear=0;
     queue[rear++]=bt;
     while(front!=rear)
     {
         printf("%c_",queue[front]->data);        /*访问队首结点的数据域*/
         if (queue[front]->lchild!=NULL)   /*将队首结点的左孩子指针入队列*/
         {  
             queue[rear]=queue[front]->lchild;
             rear++;
         }
         if (queue[front]->rchild!=NULL)   /*将队首结点的右孩子指针入队列*/
         {  
             queue[rear]=queue[front]->rchild; rear++;
         }
      front++;
   } /* while */
}/* LevelOrder*/
int main()
{
    BiTree root;
    root=Create_Tree();

    printf("\n先序遍历");
    PreOrderTraverse(root);

    printf("\n中序遍历");
    InOrderTraverse(root);

    printf("\n后序遍历");
    PostOrderTraverse(root);

    printf("\n层次遍历");
    LevelOrder(root);

    printf("\n");
   
    return 0;
}

2010-12-09 12:43
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
多模块的
就一个模块一个模块地调试实现 把模块不相关的注释掉
Status PreOrderTraverse(BiTree T,Status( * Visit)(TElemType e))中的
            MAXSIZE
Status 返回类型

Status PreOrderTraverse(BiTree T,Status( * Visit)(TElemType e))函数的定义和在主函数的调用格式
   /* printf("\n先序遍历");
    PreOrderTraverse(root);*/

Status PrintElement(TElemType e)函数体
        printf(e);

这些都是错误 应该在编译的时候能够暴露出来

#include "stdio.h"
#include "stdlib.h"

#define MAXSIZE 215

typedef char TElemType;
typedef int Status;

typedef struct bitree
{
    TElemType data;
    struct bitree *lchild,*rchild;
}BiTNode, *BiTree;

BiTree Create_Tree()
{
    BiTree T;
    char a;
    scanf("%s",&a);
    if(a=='#')
        T=NULL;
    else
    {
        T= (BiTNode*) malloc (sizeof(BiTNode));
        T->data = a;
        printf("输入左孩子的值\n");
        T->lchild = Create_Tree();
        printf("输入右孩子的值\n");
        T->rchild = Create_Tree();
    }

    return T;
}

void PreOrderTraverse(BiTree T)
{
    if(T!=NULL)
    {
        printf("%c_  ",T->data);
        PreOrderTraverse(T->lchild);
        PreOrderTraverse(T->rchild);
    }
}

Status PrintElement(TElemType e)
{
    printf("%c", e);

    return 1;
}   
void InOrderTraverse(BiTree T)
{
    if(T!=NULL)
    {
        InOrderTraverse(T->lchild);
        printf("%c_  ",T->data);
        InOrderTraverse(T->rchild);
    }
}
void PostOrderTraverse(BiTree T)
{
    if(T!=NULL)
    {
        PostOrderTraverse(T->lchild);        
        PostOrderTraverse(T->rchild);
        printf("%c_  ",T->data);
    }  
}
void LevelOrder(BiTNode *bt) /*层次遍历二叉树bt*/   
{
    BiTNode* queue[MAXSIZE];
    int front,rear;
    if (bt==NULL)
        return;
     front=0;      /*非循环队列*/
     rear=0;
     queue[rear++]=bt;
     while(front!=rear)
     {
         printf("%c_",queue[front]->data);        /*访问队首结点的数据域*/
         if (queue[front]->lchild!=NULL)   /*将队首结点的左孩子指针入队列*/
         {  
             queue[rear]=queue[front]->lchild;
             rear++;
         }
         if (queue[front]->rchild!=NULL)   /*将队首结点的右孩子指针入队列*/
         {  
             queue[rear]=queue[front]->rchild; rear++;
         }
      front++;
   } /* while */
}/* LevelOrder*/
int main()
{
    BiTree root;
    root=Create_Tree();

    printf("\n先序遍历");
    PreOrderTraverse(root);

    printf("\n中序遍历");
    InOrderTraverse(root);

    printf("\n后序遍历");
    PostOrderTraverse(root);

    printf("\n层次遍历");
    LevelOrder(root);

    printf("\n");
   
    return 0;
}

2010-12-09 12:44
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2010-12-09 12:45
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
版主,你太有才了,谢了
2010-12-09 12:55
快速回复:改有错误的程序
数据加载中...
 
   



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

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