您的位置:首页 > 其它

输入一个链表,反转链表后,输出链表的所有元素。

2016-10-13 10:37 323 查看
// 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐