数据结构status函数声明(c语言status的用法)

网上科普有关“数据结构status函数声明(c语言status的用法)”话题很是火热,小编也是针对数据结构status函数声明(c语言status的用法)寻找了一些与之相关的一...

网上科普有关“数据结构status函数声明(c语言status的用法) ”话题很是火热,小编也是针对数据结构status函数声明(c语言status的用法)寻找了一些与之相关的一些信息进行分析 ,如果能碰巧解决你现在面临的问题 ,希望能够帮助到您 。

给你完全调好了,一切正常运行:

#include "stdio.h"

#include "stdlib.h"

typedef int status; //C中没有status类型,所以想使用这个类型你必须定义它

#define OK 0

#define ERROR -1

#define OVERFLOW -2 //OK 、OVERLFLOW 、ERROR这些宏的定义头文件中是没有的 ,所以你必须自己定义它们

typedef struct BiTNode{

char data;

struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

typedef struct QNode{

BiTNode *data;

struct QNode *next; //马虎 。少个字符Q

}QNode,*QueuePtr;

typedef struct{

QueuePtr front;

QueuePtr rear;

}LinkQueue;

void CreateBiTree(BiTree &T)

{

char ch;

/*printf("Input the char\n"); //你把输出语句放到递归的函数里它会输出N多遍,所以,还是放到主函数里吧 */

scanf("%c",&ch); //你忘了取地址符了

/*if(ch == '#')T==NULL;*/ if(ch == '#')T=NULL;//是将T指针赋值为空 ,而不是T==NULL;

else{

if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))exit(OVERFLOW);

/**T.data=ch;*/T->data=ch; //楼主要仔细研究一下指向运算符"->"和结构体成员运算符"."的区别,此程序中N多错误都是因为没有区分它们引起的

CreateBiTree(T->lchild);

CreateBiTree(T->rchild);

}

}

status DLR(BiTree root) //void类型是不能返回值的,所以你可以把函数改成status类型;函数参数不用引用。因为没有改变参数值 ,只是使用

{

if(root!=NULL)

{

printf("%c",root->data);

DLR(root->lchild);

DLR(root->rchild); //这一点属于严重错误,说明你没有弄清递归遍历的过程。是先根,再左 ,再右 。下面还有三个同样的错误

}

return OK;

}

status LDR(BiTree root) //函数参数不用引用。因为没有改变参数值,只是使用

{

if(root!=NULL)

{

LDR(root->lchild);

printf("%c",root->data);

LDR(root->rchild); //同上

}

return OK;

}

status LRD(BiTree root) //函数参数不用引用。因为没有改变参数值,只是使用

{

if(root!=NULL)

{

LRD(root->lchild);

LRD(root->rchild); //同上

printf("%c",root->data);

}

return OK;

}

int i=0;

int Found_SUM(BiTree root)

{

if(root!=NULL)

{

i++;

Found_SUM(root->lchild);

Found_SUM(root->rchild);//递归求结点数 ,和遍历函数有什么关系?

}

return i;

}

int j=0;

int FOUND_LEAVES(BiTree root)

{

if(root!=NULL)

{

if(!root->lchild&&!root->rchild)j++;

FOUND_LEAVES(root->lchild);

FOUND_LEAVES(root->rchild);

}

return j;

}

status InitQueue(LinkQueue &Q) //这儿应该是初始化队列 ,而不是销毁队列吧 。。。汗 。。。你原来的步骤是用来销毁队列Q的啊

{

Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));

if(!Q.front)exit(OVERFLOW);

Q.front->next=NULL;

return OK;

}

status EnQueue(LinkQueue &Q,BiTree e)

{

QueuePtr p=NULL;//p的定义 。。

p=(QueuePtr)malloc(sizeof(QNode));//马虎,少个右括号

if(!p) exit(OVERFLOW);

p->data=e;p->next=NULL;//马虎,两个语句要用";"分开

Q.rear->next=p;

Q.rear=p;

return OK;

}

status DeQueue(LinkQueue &Q,BiTree &e) //此处添加一个引用参数e较为方便 ,你原来的方法太复杂了

{

QueuePtr p;

if(Q.front==Q.rear)return ERROR;

p=Q.front->next;

e=p->data;

Q.front->next=p->next;

if(Q.rear==p)Q.rear=Q.front;

free(p);

return OK;

}

status LSCAN(BiTree root)

{

LinkQueue Q;

BiTree e=NULL;

InitQueue(Q);

EnQueue(Q,root);

while(Q.front<Q.rear) //如果队列非空

{

DeQueue(Q,root);

printf("%c",root->data);

if(root->lchild)EnQueue(Q,root->lchild);

if(root->rchild)EnQueue(Q,root->rchild);

}

return OK;

}

void main()

{

BiTree T=NULL;//未定义T

T=(BiTree)malloc(sizeof(BiTNode));

int a,b;

printf("Input the char\n");

CreateBiTree(T);

printf("\n");

printf("先序遍历二叉树:\n");

DLR(T);

printf("\n");

printf("中序遍历二叉树:\n");

LDR(T);

printf("\n");

printf("后序遍历二叉树:\n");

LRD(T);

printf("\n");

printf("层序遍历二叉树:\n");

LSCAN(T);

/*LSCAN(T); // 不知你为啥要用两遍这个函数,给你注释掉了一个*/

a=Found_SUM(T);

b=FOUND_LEAVES(T);

printf("叶子结点数目%d",b);printf("\n");

printf("结点总数%d",a);

printf("\n");

}

关于“数据结构status函数声明(c语言status的用法) ”这个话题的介绍,今天小编就给大家分享完了 ,如果对你有所帮助请保持对本站的关注!

本文来自作者[雁白]投稿,不代表易网号立场,如若转载,请注明出处:https://www.ibb4.com/cshi/202508-1616.html

(210)

文章推荐

  • 什么是科普书籍?_2

    网上有关“什么是科普书籍?”话题很是火热,小编也是针对什么是科普书籍?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。科普书籍有哪些?《爱因斯坦相对论》.《果壳伐的宇宙》《时间简史》《科学探案》《万物简史》《婴儿宇宙》《爱因斯坦的生命和他的宇宙》《物理学史

    2024年12月15日
    10
  • 先读研究生还是先读硕士?

    网上科普有关“先读研究生还是先读硕士?”话题很是火热,小编也是针对先读研究生还是先读硕士?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。硕士博士研究生的顺序:1、硕士是一个介于学士及博士之间的研究生学位,拥有硕士学位者通常象征具有对其专注、所研究领域的基础的

    2025年06月23日
    159
  • 什么是木命人?_1

    网上科普有关“什么是木命人?”话题很是火热,小编也是针对什么是木命人?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。木,是五行中的一种属性,在五情中代表仁慈,代表人的身体部位为肝脏,木命人性格很直率倔强,遇事容易有恻隐之心,很容易同情别人的遭遇,生活乐观,也

    2025年06月23日
    136
  • 为什么专硕不能考公务员

    网上科普有关“为什么专硕不能考公务员”话题很是火热,小编也是针对为什么专硕不能考公务员寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。专硕不能参加公务员考试的主要原因是因为不符合公务员岗位的报考要求。1、专硕不能参加公务员考试的原因:具体原因并不是因为专硕学位

    2025年06月24日
    155
  • 狮子座能和狮子座配情侣吗?

    网上科普有关“狮子座能和狮子座配情侣吗?”话题很是火热,小编也是针对狮子座能和狮子座配情侣吗?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。情侣速配狮子座:狮子座配对指数友情:★★★爱情:★★★★婚姻:★★★亲情:★★★谈情必读:大家都是同一个性格的人,在一

    2025年06月25日
    194
  • 唐山二中实验学校电话

    网上科普有关“唐山二中实验学校电话”话题很是火热,小编也是针对唐山二中实验学校电话寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。唐山二中实验学校电话:0315-2837222学校介绍唐山市第二中学(TangShanNo.2MiddleSchool)坐落

    2025年06月26日
    122
  • 山东财经大学真的很一般吗

    网上科普有关“山东财经大学真的很一般吗”话题很是火热,小编也是针对山东财经大学真的很一般吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。山东财经大学不一般,山东财经大学是省重点大学和中国高水平大学。山东财经大学简介:1、山东财经大学(简称山东财大,Shand

    2025年06月27日
    192
  • 襄阳有哪几所大学?

    网上科普有关“襄阳有哪几所大学?”话题很是火热,小编也是针对襄阳有哪几所大学?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。襄阳市有六所大学:湖北文理学院、湖北文理学院理工学院、襄阳职业技术学院、襄阳汽车职业技术学院、军事经济学院襄阳士官学校、武警黄金技术学

    2025年06月28日
    199
  • 四川最好的十所大学

    网上科普有关“四川最好的十所大学”话题很是火热,小编也是针对四川最好的十所大学寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。四川最好的十所大学如下:四川省最好的10所大学有:四川大学、电子科技大学、西南交通大学、成都理工大学、西南财经大学、四川农业大学、西南

    2025年06月28日
    142
  • 生物制药专业考研可以考哪些大学-

    网上科普有关“生物制药专业考研可以考哪些大学?”话题很是火热,小编也是针对生物制药专业考研可以考哪些大学?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。生物制药专业考研可以考的大学有北京大学、清华大学、南京大学、复旦大学、浙江大学等。1、北京大学北京大学(P

    2025年07月01日
    162

发表回复

本站作者后才能评论

评论列表(4条)

  • 雁白
    雁白 2025年08月02日

    我是易网号的签约作者“雁白”!

  • 雁白
    雁白 2025年08月02日

    希望本篇文章《数据结构status函数声明(c语言status的用法)》能对你有所帮助!

  • 雁白
    雁白 2025年08月02日

    本站[易网号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育

  • 雁白
    雁白 2025年08月02日

    本文概览:网上科普有关“数据结构status函数声明(c语言status的用法)”话题很是火热,小编也是针对数据结构status函数声明(c语言status的用法)寻找了一些与之相关的一...