思路:考虑反转链表,即先存进去的后取出来,符合栈的操作,故使用STL中的stack
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* pHead) { stack<ListNode> s; ListNode *p = pHead; while(p != NULL) { s.push(*p); p = p->next; } p = pHead; while(!s.empty()) { ListNode temp = s.top(); p->val = temp.val; s.pop(); p = p->next; } return pHead; } };