xjh2527 2021-11-11 19:12 采纳率: 91.7%
浏览 19
已结题

可以看看为什么编译没有错误,能输入,但是没有输出吗


#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
typedef struct BiTNode//树的定义 
{
    char date;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

typedef struct//栈的定义 
{
    int *base;
    int *top;
    int stacksize;
}SqStack;

void InitStack(SqStack &S)//初始化栈 
{
    S.base=(int *)malloc(100*sizeof(char)); 
    S.top=S.base;
    S.stacksize=100;
}

bool StackEmpty(SqStack S)//判断栈空 
{
    if(S.top==S.base)
        return 1;
    else
        return 0;
}

bool Push(SqStack &S,char e)//入栈 
{
    if(S.top-S.base==S.stacksize)
        return 0;
    *S.top++=e;
    return 1;
}

bool Pop(SqStack &S,char &e)//出栈 
{
    if(S.top==S.base);
        return 0;
    e=*--S.top;
    return 1;
 } 

int creatBiTNode(BiTree &bt)//顺序创建二叉树 
{
    char ch;
    scanf("%c",&ch);
    if(ch=='#')
        bt=0; 
    else{
        bt=(BiTNode*)malloc(sizeof(BiTNode));
        bt->date=ch;
        creatBiTNode(bt->lchild);
        creatBiTNode(bt->rchild);
    }
}

int preorder(BiTree &bt)//顺序非递归访问二叉树 
{
    BiTNode *p;
    SqStack *st;
    InitStack(*st);
    p=bt;
    while(!StackEmpty(*st)||p!=0)
    {
        while(p!=0)
        {
            printf("%c ",p->date);
            Push(*st,p->date);
            p=p->lchild;    
        }
        if(!StackEmpty(*st))
        {
            Pop(*st,p->date);
            p=p->rchild;
        }
    }
}

int main()//测试 
{
    BiTree bt;
    printf("先序输入二叉树的节点,'#'表示空");
    creatBiTNode(bt);
    printf("这棵树的先序节点为"); 
    preorder(bt);
    return 0;
}
  • 写回答

1条回答 默认 最新

  • xjh2527 2021-11-11 19:13
    关注

    先序建立二叉树,并用非递归访问

    评论

报告相同问题?

问题事件

  • 系统已结题 11月19日
  • 创建了问题 11月11日

悬赏问题

  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!