这是reversePrint功能:
void SinglyLinkedList::reversePrint(Node* p)
{
if (p == NULL) {
return;
} else {
reversePrint(p->next);
cout << p->data << " ";
}
}
Run Code Online (Sandbox Code Playgroud)
(即:list = 1 -> 2 -> 3 -> 4,print out = 4 3 2 1)
它只有在*p最初指向指向的内容时才有效*head,即第一个节点1.但是,Node* headSinglyLinkedList类的私有成员因此无法在类外访问.我怎样才能将a pointer这些点传递head给main?
这就是我在说的:
int main() {
SinglyLinkedList *list = new SinglyLinkedList();
list->addNode(1);
list->addNode(2);
list->addNode(3);
list->addNode(4);
Node* p = head; // <---- Xcode says: Use of undeclared identifier 'head'
list->reversePrint(p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我试图从方法内部指出*p什么.但是,它扰乱了递归*headreversePrint
class SinglyLinkedList {
public:
// constructor
SinglyLinkedList();
// destructor
~SinglyLinkedList();
// public APIs
void print();
void addNode(int number);
void reversePrint(Node* p);
private:
Node* head;
};
Run Code Online (Sandbox Code Playgroud)
将使用a的成员函数移动Node*到该private部分.
创建一个public不接受任何输入的成员函数.使用private成员函数实现它.
void SinglyLinkedList::reversePrint()
{
this->reversePrint(this->head);
}
Run Code Online (Sandbox Code Playgroud)在public没有Node*调用函数的情况下调用成员函数.
list->reversePrint();
Run Code Online (Sandbox Code Playgroud)