重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言树的visit函数的简单介绍

c语言二叉树问题

#include

成都创新互联是少有的做网站、成都网站制作、营销型企业网站、微信小程序、手机APP,开发、制作、设计、买链接、推广优化一站式服务网络公司,从2013年开始,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评

#include

#include

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

#define OVERFLOW -2

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define NULL 0

typedef int status;

typedef struct bitnode{ /*二叉树的结点*/

char data;

struct bitnode *lchild,*rchild;

}bitnode,*bitree;

bitree t;

status createbitree(bitree *t) /*按先序次序输入值建立二叉树*/

{

char ch;

scanf("%c",ch);fflush(stdin);/*清除缓存区里的回车*/

if(ch=='*') *t=NULL;/*这里以星号作为结束标志*/

else{

if(!(*t=(bitnode *)malloc(sizeof(bitnode))))exit(OVERFLOW);

(*t)-data=ch;

createbitree(((*t)-lchild));

createbitree(((*t)-rchild));

}

return OK;

}

status visit(char ch) /*对二叉树每个结点元素的访问操作*/

{

printf("%c",ch);

return OK;

} /*你这个visit函数好像没什么作用?可以删掉*/

status preordertraverse(bitree t) /*按先序访问二叉树*/

{

if(t)

{

printf("%c",t-data);

if(preordertraverse(t-lchild))

if(preordertraverse(t-rchild))return OK;

return ERROR;

}else return OK;

}

status jh(bitree t)

{

bitree x;

x=t-lchild;

t-lchild=t-rchild;

t-rchild=x;

return OK;

}

status exchange(bitree t) /*交换二叉树中所有结点的左、右子树*/

{

if(t)

{

jh(t);

if(jh(t-lchild)) /*这里是最重要的地方,你好像写错了吧*/

if(jh(t-rchild))return OK;

return ERROR;

}else return OK;

}

void main()

{

printf("input to create binary tree:\n");

createbitree(t); /*按先序建立二叉树*/

printf("create ok");/*提示createbitree函数没有出问题*/

exchange(t);/*交换每个结点的左、右子树*/

printf("\n");/*输出一个换行*/

preordertraverse(t); /*按先序访问修改后的二叉树*/

getch();

}

我试过了,可以

c语言里有没有visit()函数

答案是有的。

visit是自己写的函数的指针。用来输出你遍历遇到的节点。

拓展:

C语言于1972年11月问世,1978年美国电话电报公司(ATT)贝尔实验室正式发布C语言,1983年由美国国家标准局(American National Standards Institute,简称ANSI)开始制定C语言标准,于1989年12月完成,并在1990年春天发布,称之为ANSI C,有时也被称为 C89 或 C90。

C++ visit函数作用

Visit在这里代表一个泛用的过程,也就是说对子树进行操作的过程。比如说这整个过程,如果是想要输出对应的节点,那在里面可能就是

void Visit(TNode *node)

{

coutnode-value" ";

}

这样的样子;或者,比如要交换每个节点的左右子树,那就是

void Visit(TNode *node){

TNode *temp = node-left;

node-left = node-right;

node-right = temp;

}

这样的形式。总之就是任何可以对单个节点进行操作的代码,根据需要而定。

二叉树遍历是不需要标记的,因为树形结构,每个节点不可能访问超过一次(不存在环的缘故)。

C语言关于函数中调用函? 数据结构

这是复杂指针中最容易看懂的一种啦,搜索一下就会有人教你怎么看。基本方法是先右后左,遇小括号回头。习惯一下如下的读法,看多了就习惯了。

int (* Visit)(int e)

从Visit向右看,遇到括号,回头向左,看到*,所以Visit是一个指针。继续向左看,遇到括号,回头向右,看到(int e),这是一个参数为int的函数(为什么这样看,本能了^_^)。读到现在,已经知道Visit是一个指向参数为int的函数的指针,但函数的返回类型还没弄清楚。右边已经没有了,回头向左,看到int,这是函数的返回类型。

因此,Visit是一个函数指针,它指向的函数为int fun(int e)。注意,对Visit来说,它一点也不关心函数名,只要参数和返回值符合如上定义的,这个指针就可以调用。这个函数在哪呢,就是:

int Print_Element(int e)

{

printf("%d ", e);

return 0;

}

所以书上就说,Pre_Order_Traverse在先序遍历时,会调用这个函数来输出节点。

定义Visit时,只要把某个要调用的函数的名字改成(Visit*),其余不动,就可以正确写出这个指针。以后学到动态链接库的时候,这种指针是很常见的,用多了就和吃饭一样简单

C++实现二叉树中的visit函数是如何定义的?

应该没错,就是想输出结点数据呗,直接cout。Visit函数是对数据元素操作的具体函数。比如您要先序遍历,肯定要输出树上每个节点的数值吧。输出函数就可以写在Visit函数中的。那样程序运行之后,就可以输出二叉树的先序遍历了。

C++二叉树遍历函数中的Visit是什么

可以是输出结点,也可以是计算结点

当你先序遍历时,他就可以是输出结点


本文标题:c语言树的visit函数的简单介绍
文章链接:http://cqcxhl.com/article/dodgghc.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP