首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

刚学数据结构,望高手指教解决方法

2012-02-29 
刚学数据结构,望高手指教template class Tvoid BinaryTreeT:: InOrder(BinTreeNodeT * subTree, voi

刚学数据结构,望高手指教
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); 在使用我应该怎样使用???

总体上都不怎么能理解.真希望有人能从各方面给讲解 一下.谢谢

[解决办法]
是的,指向函数的指针
函数指针是这个函数的入口地址。
比如你定义了一个
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这个函数的指针作为参数传入了。

热点排行