从尾到头输出链表
题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode *m_pNext;
};
xxj
#include <iostream>
#include <stack>
using namespace std;
void PrintlistReverse(listNode *pHead)
{
stack<ListNode *> nodes;
ListNode *pNode = pHead;
while(pNode != NULL)
{
nodes.push(pNode);
pNode = pNode->m_pNext;
}
while( !nodes.empty() )
{
nodes.top();
cout << pNode->m_pNext << " ";
nodes.pop();
}
}
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode reversedHead = null;
ListNode nodeNow = head; // 当前遍历的节点
ListNode prev = null; // 前一个节点
ListNode next = null; // 下一个节点
while (nodeNow != null) {
next = nodeNow.next;
if (next == null) { // 遍历到最后一个节点了
reversedHead = nodeNow; }
nodeNow.next = prev;
prev = nodeNow; //下一次遍历的时候prev和nodeNow都变化了
nodeNow = next;
}
return reversedHead;
}
}