输入一个链表,反转链表后,输出链表的所有元素。
// test14.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<string>
#include<cctype>
#include <vector>
#include<exception>
#include <initializer_list>
#include<stack>
using namespace std;
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
//把链表中的元素首先存入一个栈中
//从栈中一个一个地读出数据插入rlist中
ListNode *rlist=pHead;
stack<int> temp;
while (rlist !=NULL)
{
temp.push((*rlist).val);
rlist = rlist->next;
}
rlist = pHead;
while (rlist !=NULL)
{
if(!temp.empty())
{
(*rlist).val = temp.top();
temp.pop();
rlist=(*rlist).next;//一开始这个地方忘了更新rlist了,结果一直出现栈溢出这个问题
}
}
return pHead;
}
};
int main()
{
int num;
vector<int> vec;
Solution so;
ListNode first(1);
ListNode second(2);
ListNode third(3);
ListNode four(4);
ListNode *head=&first;
first.next = &second;
second.next = &third;
third.next = &four;
ListNode *result= so.ReverseList(head);
while (result !=NULL)
{
cout << (*result).val<<" ";
result = (*result).next;
}
cout << endl;
return 0;
}