题目:Reverse a singly linked list.
将链表反向输出,遍历链表,先遍历的后输出,最后遍历的先输出,实际上是一个栈的过程,利用栈实现。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution
{
public:
ListNode* reverseList(ListNode* head)
{
ListNode *temp,*temp1,*P;
temp = head;
int i =0;
stack<ListNode*>stack1;
stack1.push(NULL);
if(head==NULL || head->next == NULL)//链表只有一个元素和链表是空的情况
{
return head;
}
while(temp != NULL)
{
stack1.push(temp);
temp = temp->next;
}
while(!stack1.empty())
{
temp1 = stack1.top();
if( i == 0)
{
P = temp1;
temp = temp1;
}
else
{
temp->next = temp1;
temp = temp->next;
}
i++;
stack1.pop();
}
return P;
}
};