所有代码均通过G++编译器测试,仅为练手纪录。
//面试题5:从尾到头打印链表
//输入一个链表的头结点,从尾到头反过来打印每个结点的值。
//面试题5:从尾到头打印链表
//输入一个链表的头结点,从尾到头反过来打印每个结点的值。
struct ListNode
{
int m_nValue;
ListNode* m_pNext;
public:
ListNode(int nValue = 0):m_nValue(nValue),m_pNext(NULL){};
};
//非递归实现
void ListPrintReverse(ListNode *pHead)
{
if(NULL == pHead)
{
LogError("list is empty");
return;
}
stack<int> stackValue;
ListNode *pNode = pHead;
while (pNode)
{
stackValue.push(pNode->m_nValue);
pNode = pNode->m_pNext;
}
while (!stackValue.empty())
{
LogInfo("value:%d",stackValue.top());
stackValue.pop();
}
}
//递归实现
void ListPrintReverse_Recursively(ListNode *pHead)
{
if(pHead)
{
ListPrintReverse_Recursively(pHead->m_pNext);
LogInfo("value %d",pHead->m_nValue);
}
}
ZhaiPillary
2016-12-23