- 题目:输入一个链表的头节点,从头到尾反过来打印每个节点的值。
- 思路:要打印单链表就必须遍历单链表,遍历的顺序是从头到尾,而打印的顺序是从尾到头,就是说最先遍历的节点最后打印,最后遍历的节点最先打印,就是所谓的后进先出,那么我们就可以用栈实现这种顺序,从头到尾遍历链表,每遍历一个节点将它保存到栈中,知道整个链表遍历完成,在从栈中一次取出节点并打印对应的值。
- 实现代码
void ResverPrintList1(pNode pHead)
{
std::stack<pNode> s;
while (NULL != pHead)
{
s.push(pHead);
pHead = pHead->_pNext;
}
while (!s.empty())
{
pNode pCur = s.top();
printf("%d ->", pCur->_data);
s.pop();
}
}
递归
既然采用栈来解决,