xjh2527 2021-11-11 15:37 采纳率: 91.7%
浏览 4
已结题

第一次接触数据结构编程,问题是用递归建立二叉树,用非递访问二叉树,问题好像都是出在那几个栈的操作函数上,可以看看问题出在哪吗


#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;
 } 

void 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);
    }
}

void 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);
            p=p->lchild;    
        }
        if(!StackEmpty(st))
        {
            Pop(st,p);
            p=p->rchild;
        }
    }
}

int main()
{
    return 0;
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 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怎么把滑块和输入框相互绑定,求解决!