刚学数据结构,望高手指教

jhappen 2008-03-25 10:30:03
template <class T>
void BinaryTree<T>:: InOrder(BinTreeNode<T> * subTree, void (*visit)(BinTreeNode<T> * p))
{
if(subTree !=NULL){

InOrder(subTree->leftChild, visit);
visit (subTree);
InOrder(suvTree->rightChild, visit);
}
}
这是二叉树里的.
首先画直线那里.我给它传递的什么.这是一个函数指针.给他传递的是函数吗如max(x); 在使用我应该怎样使用???

总体上都不怎么能理解.真希望有人能从各方面给讲解 一下.谢谢
...全文
93 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰矿 2008-03-25
  • 打赏
  • 举报
回复
是的,指向函数的指针
函数指针是这个函数的入口地址。
比如你定义了一个
void function(int x){ printf("%d",x); }
int main()
{
void (*pfunc)(int a);/*定义一个函数指针*/
pfunc = function;/*将function的地址赋给pfunc*/
pfunc(100);/*然后就可以用了*/

return 0;
}
同样
void (*visit)(BinTreeNode <T> * p)
也是定义了一个函数指针,这个指针变量的名称为visit,带有一个BinTreeNode类型的指针参数,无返回值,void
因此调用的时候
要传给InOrder函数实参,其中void (*visit)(BinTreeNode <T> * p)对应的就是事先写好的输出函数
比如
你的输出函数为
void print(BinTreeNode <T> * t){.....}
调用时就把print这个函数的指针作为参数传入了。

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧