看到这道题,我们肯定会想到要遍历链表。遍历链表的顺序是从头到尾,输出却要从尾到头,相当于说第一个遍历的节点最后一个输出,最后遍历的节点第一个输出。这样我们会想到先进后出----栈,先让所有元素都入栈,出栈的时候顺便打印输出就可以了。而递归本质上也是一个栈结构,所以递归也可以解决问题。
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<<" ";
}
}

本文介绍了一种使用栈和递归方法实现链表逆序打印的技术。通过将链表元素压入栈中再依次弹出的方式,或者利用递归调用的特性,实现了从尾到头打印链表的功能。
9887

被折叠的 条评论
为什么被折叠?



