从尾到头打印链表

来源:互联网 发布:java 调用指定浏览器 编辑:程序博客网 时间:2024/06/11 08:24

题目:输入一个链表的头结点 从尾到头反过来打印出每个结点的值

struct ListNode{int m_nKey;ListNode *m_pNext;}



从头到尾遍历链表 然后将遍历结果压入栈 最后弹出栈的顺序即为从尾到头遍历顺序



while(p!=NULL){s.push(p);p=p->m_pNext;}while(s.size()){cout<<s.top()->m_nKey<<' ';s.pop();}

假设链表结点为1-2-3-4-5

打印1时 1后面的结点应当已被打印 打印2时 2后面的结点已被打印

因此可以递归打印


void printlist(ListNode *p){if(p!=NULL){ if(p->m_pNext!=NULL)printlist(p->m_pNext); cout<<p->m_nKey<<' ';}}


0 0