新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
int visit(int,int);
成都创新互联拥有网站维护技术和项目管理团队,建立的售前、实施和售后服务体系,为客户提供定制化的网站设计制作、成都网站设计、网站维护、资阳主机托管解决方案。为客户网站安全和日常运维提供整体管家式外包优质服务。我们的网站维护服务覆盖集团企业、上市公司、外企网站、商城网站开发、政府网站等各类型客户群体,为全球数千家企业提供全方位网站维护、服务器维护解决方案。
上面是函数声明,第一个int表示返回int型值,()里面两个int表示需要提供两个int型参数。
答案是有的。
visit是自己写的函数的指针。用来输出你遍历遇到的节点。
拓展:
C语言于1972年11月问世,1978年美国电话电报公司(ATT)贝尔实验室正式发布C语言,1983年由美国国家标准局(American National Standards Institute,简称ANSI)开始制定C语言标准,于1989年12月完成,并在1990年春天发布,称之为ANSI C,有时也被称为 C89 或 C90。
Visit函数是对数据元素操作的具体函数。
void Visit(TNode *node)
{
coutnode-value" ";
}
这样的样子;或者,比如要交换每个节点的左右子树,那就是:
void Visit(TNode *node){
TNode *temp = node-left。
node-left = node-right。
node-right = temp。
比如要先序遍历,肯定要输出树上每个节点的数值吧。输出函数就可以写在Visit函数中的。那样程序运行之后,就可以输出二叉树的先序遍历了。
扩展资料:
线性表的双向链表存储结构:
typedef struct DuLNode{
ElemType data;
struct DuLNode *prior,*next;
}DuLNode,*DuLinkList;
带头结点的双向循环链表的基本操作:
void InitList(DuLinkList L)
{ /* 产生空的双向循环链表L */
L=(DuLinkList)malloc(sizeof(DuLNode));
if(L)
L-next=L-prior=L;
elseexit(OVERFLOW);}
重置链表为空表:
void ClearList(DuLinkList L) /* 不改变L */
{ DuLinkList q,p=L-next; /* p指向第一个结点 */
while(p!=L) /* p没到表头 */{q=p-next;free(p);p=q;}L-next=L-prior=L; /*头结点的两个指针域均指向自身 */}
验证是否为空表:
Status ListEmpty(DuLinkList L){ /* 初始条件:线性表L已存在
if(L-next==LL-prior==L)
return TRUE;
elsereturn FALSE;}
参考资料来源:百度百科-双向链表
visit 一般是指树型链表结构中对某个节点内容进行访问的函数,就是取出节点内容去做某一件事,通常算法中不写出具体函数内容。
树型链表结构中自顶开始按照某种顺序顺藤摸瓜至某个节点的过程称为“遍历”:
void traverse(link h, void visit(link))
{
if (h == 0) return;
visit(h);
traverse(h-l, visit);
traverse(h-r, visit);
}
前序遍历(非递归):
非递归的基于栈的函数与上面的递归函数在功能上是相等的。
void traverse(link h, void visit(link))
{
Stacklink s;
s.push(h);
while(!s.empty())
{
visit(h = s.pop());
if (h-l != 0) s.push(h-l);
if (h-r != 0) s.push(h-r);
}
}
层次顺序的遍历:
把前序遍历中基本数据结构从栈转变成队列,这样的转变就使遍历转成层次顺序的。
void traverse(link h, void visit(link))
{
Queuelink q;
q.put(h);
while (!q.empty())
{
visit(h = q.get());
if (h-l != 0) q.put(h-l);
if (h-r != 0) q.put(h-r);
}
}