从尾到头打印头节点可以借助栈来实现。递归的本质是一个栈结构,又可以使用递归的方法来实现。
typedef struct Node
{
int data;
struct Node *next;
}Node, *LinkList;
//栈
void reversePrint(LinkList &L)
{
if(L -> next == NULL)
return;
LinkList p;
p = L -> next;
stack<int> s;
while(p)
{
s.push(p -> data);
p = p -> next;
}
while(!s.empty())
{
cout << s.top() << endl;
s.pop();
}
}
//递归
void reversePrint(LinkList &L)
{
if(L -> next == NULL)
return;
LinkList p = L -> next;
if(p -> next)
{
reservePrint(p -> next);
}
cout << p -> data << endl;
}