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

// test14.cpp : 定义控制台应用程序的入口点。
//

include "stdafx.h"

include

include

include

include

include

include

include <initializer_list>

include

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 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 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;
}

posted @ 2016-10-13 10:37  wdan2016  阅读(1063)  评论(0)    收藏  举报