面试题---从尾到头打印链表
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<<" ";
}
}
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<<" ";
}
}
相关文章推荐
- 【剑指offer】面试题05:从尾到头打印链表
- 剑指offer面试题——从尾到头打印链表
- 剑指offer 面试题5 从尾到头打印链表 java版答案
- 《剑指Offer》面试题五之从尾到头打印链表
- 《剑指offer》【面试题5:从尾到头打印链表】
- 《剑指offer》Python语言 面试题5:从尾到头打印链表
- 【剑指offer】面试题5:从尾到头打印链表 java
- 面试题之【从尾到头打印链表】
- 面试题5:从尾到头打印链表
- 剑指Offer: 面试题5 从尾到头打印链表
- half ok剑指Offer面试题6 从尾到头打印链表
- 剑指offer之面试题5:从尾到头打印链表
- 面试题6:从尾到头打印链表(offer)
- 面试题5:从尾到头打印链表
- (剑指Offer)面试题5:从尾到头打印链表
- 剑指Offer学习之面试题5 : 从尾到头打印链表
- 面试题—— 从尾到头打印链表
- 剑指offer-面试题5-从尾到头打印链表
- 面试题4:从尾到头打印链表
- 【面试题005】从尾到头打印链表