我正在做一些 C++ 练习来学习这门语言。目前,我正在研究线性数据结构,我被要求在没有额外数组 o 结构的情况下在链表中实现排序。现在,我想在 iterate 函数中使用回调来灵活调用
print
函数来检查 findMin
的值以找到确定排序基数的最小值。我阅读了这篇关于回调的非常有用的指南 C/C++ 回调 stackoverflow post,但我无法在 iterate
函数内的递归调用中引用回调。很高兴得到一些帮助来解决代码中的注释显示的问题,但是如果你们让我知道我需要回顾/研究哪个概念,那将对建立回调知识基础更有帮助。
干杯!
/* Implement sorting in a dynamic linked list without using an additional array or data structure.*/
#include <iostream>
class List{
typedef struct Node{
int data;
Node* next = nullptr;
}node;
public:
List(int data);
~List();
void add(int data);
void iterate(Node * node, void(*func)());
private:
int min = 0;
Node* root;
Node* it;
};
List::List(int data){
root->data = data;
it = root;
}
List::~List(){}
void List::iterate(Node * node, void(*func)()){
func();//prints or finds min
if(node->next == nullptr)
return;
iterate(node->next,&func()); //--compiler says it can't get an address of a rvalue type void
}
int main(){
List list(8);
list.add(9);
list.add(7);
list.add(4);
list.add(3);
return 0;
}