| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖
标题:有错误,无法运行,请帮忙检查错误
只看楼主 加入收藏
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:7 
有错误,无法运行,请帮忙检查错误
#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 215
typedef int Status;
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;
}

void PreorderTraverse(Bitree T)
{
   sqstack s;
   Empty(&s)
   Push(&s,root);
   Pop(&s,b);
   Bitree p,b;
   Inintstack(&s);
   while(Empty(&s))
   {
       if(root==NULL)printf("树为空树\n");
       while(Gettop(s,&p)&&p){printf("%c",p->data);Push(&s,p->Lchild);}
       Pop(&s,b);
       if(Empty(&s)){Pop(&s,b);Push(&s,b->Rchild);}
   }        
}
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");
   
   
}

有错误,无法运行,求改正
搜索更多相关主题的帖子: 运行 检查 
2010-12-13 12:15
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:30 
m貌似楼主代码没贴完整啊,那个empty 和push pop 都没有,还有Bitree应该成BiTree ,还有堆栈也貌似没声明
2010-12-13 14:42
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
我将Bitree变成BiTree后,下面提示出现了很多错误
2010-12-13 15:36
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
错误太多,不会改
2010-12-13 15:39
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
唉,晕,没人帮我指点一下
2010-12-14 12:45
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
我说楼主怎么就没看见你定义堆栈,怎么就进行了出栈进栈等操作了呢
2010-12-14 17:58
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 215
typedef int Status;
typedef char TElemType;
typedef struct bitree                                                                                                                  
{
    TElemType data;
    struct bitree *lchild,*rchild;
}BiTNode, *BiTree;
typedef struct{
     BiTNode**base;
     BiTNode**top;
    int stacksize;
}SqStack;
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)
{
   sqstack s;
   Empty(&s)
   Push(&s,root);
   Pop(&s,b);
   Bitree p,b;
   Inintstack(&s);
   while(Empty(&s))
   {
       if(root==NULL)printf("树为空树\n");
       while(Gettop(s,&p)&&p){printf("%c",p->data);Push(&s,p->Lchild);}
       Pop(&s,b);
       if(Empty(&s)){Pop(&s,b);Push(&s,b->Rchild);}
   }        
}
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");
   
   
}

2010-12-14 18:03
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
typedef struct{
     BiTNode**base;
     BiTNode**top;
    int stacksize;
}SqStack;
2010-12-14 18:04
快速回复:有错误,无法运行,请帮忙检查错误
数据加载中...
 
   



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

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