看到这道题,我们肯定会想到要遍历链表。遍历链表的顺序是从头到尾,输出却要从尾到头,相当于说第一个遍历的节点最后一个输出,最后遍历的节点第一个输出。这样我们会想到先进后出----栈,先让所有元素都入栈,出栈的时候顺便打印输出就可以了。而递归本质上也是一个栈结构,所以递归也可以解决问题。
void PrintListTailToFront_Stack(Node* pHead) //从尾到头打印链表---栈
{
stack<Node*> s;
Node* pNode = pHead;
while(pNode != NULL) //元素全部进栈
{
s.push(pNode);
pNode = pNode->_next;
}
while( !s.empty() )
{
pNode = s.top();
cout<<pNode->_data<<" ";
s.pop();
}
}
void PrintListTailToFront(Node* pHead) //从尾到头打印链表---递归
{
if(pHead != NULL)
{
if(pHead->_next != NULL)
{
PrintListTailToFront(pHead->_next) ;
}
cout<<pHead->_data<<" ";
}
}