鱼C论坛

 找回密码
 立即注册
查看: 1198|回复: 1

[已解决]这段代码在vs里运行不了,在devc++里可以运行是为啥?

[复制链接]
发表于 2022-12-2 15:37:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

typedef char bitreeElemType;
typedef struct BiNode                                        //定义二叉链表
{
        bitreeElemType data;
        BiNode* lchild, * rchild;
}BiNode,*BiTree;

int leaf = 0;

void pre_create_Bitree(BiTree* T);                        //先序创建二叉链表
void pre_traverse_Bitree(BiTree T);                        //先序遍历
void in_traverse_Bitree(BiTree T);                        //中序遍历
void post_traverse_Bitree(BiTree T);                //后序遍历
int Gethight_Bitree(BiTree T);                                //求高度
int Getleaf_Bitree(BiTree T);                                //求叶子数
void swap_Bitree(BiTree T);                                        //左右孩子交换


void pre_create_Bitree(BiTree* T)
{
        printf("请输入二叉树元素 \n");
        bitreeElemType e;
        scanf("%c", &e);
        if (e == '#')
                *T = NULL;
        else
        {
                *T = (BiTree)malloc(sizeof(BiNode));
                (*T)->data = e;
                pre_create_Bitree(&((*T)->lchild));
                pre_create_Bitree(&((*T)->rchild));
        }
}

void pre_traverse_Bitree(BiTree T)
{
        if (!T)
                return;
        printf("%c", T->data);
        pre_traverse_Bitree(T->lchild);
        pre_traverse_Bitree(T->rchild);
}

void in_traverse_Bitree(BiTree T)
{
        if (!T)
                return;
        in_traverse_Bitree(T->lchild);
        printf("%c", T->data);
        in_traverse_Bitree(T->rchild);
}

void post_traverse_Bitree(BiTree T)
{
        if (!T)
                return;
        post_traverse_Bitree(T->lchild);
        post_traverse_Bitree(T->rchild);
        printf("%c", T->data);
}

int Gethight_Bitree(BiTree T)
{
        if (!T)
                return 0;
        return Gethight_Bitree(T->lchild) > Gethight_Bitree(T->rchild) ? Gethight_Bitree(T->lchild) + 1 
                                                                                                                                   : Gethight_Bitree(T->rchild) + 1;
}

int Getleaf_Bitree(BiTree T)
{
        if (!T)
                return 0;
        if (T->lchild == NULL && T->rchild == NULL)
                return ++leaf;
        Getleaf_Bitree(T->lchild);
        Getleaf_Bitree(T->rchild);
}

void swap_Bitree(BiTree T)
{
        if (!T)
                return;
        BiTree temp = (BiTree)malloc(sizeof(BiNode));
        temp = T->lchild;
        T->lchild = T->rchild;
        T->rchild = temp;
        swap_Bitree(T->lchild);
        swap_Bitree(T->rchild);
}

int main()
{
        BiTree T = NULL;
        pre_create_Bitree(&T);
        printf("先序遍历为: \n");
        pre_traverse_Bitree(T);
        printf("该树高度为: %d\n", Gethight_Bitree(T));
        printf("该树有%d个叶子\n", Getleaf_Bitree(T));
        swap_Bitree(T);
        printf("交换左右节点后先序遍历为: \n");
        pre_traverse_Bitree(T);

        return 0;
}
最佳答案
2023-3-28 18:39:51
第27行,scanf("%c", &e);,改成,scanf_s("%c",&e,1);
       

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-28 18:39:51 | 显示全部楼层    本楼为最佳答案   
第27行,scanf("%c", &e);,改成,scanf_s("%c",&e,1);
       

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 11:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表