您的位置:首页 > 职场人生

面试题---从尾到头打印链表

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

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<<" ";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: