一、题目要求
Reverse a singly linked list.
二、代码实现
解法1:
ListNode* reverseList(ListNode* head) {
stack<ListNode*> st;
if(head==NULL)
return head;
ListNode* start=head,*tmp;
while(start!=NULL)
{
st.push(start);
start=start->next;
}
//
head=st.top();
st.pop();
start=head;
while(!st.empty())
{
tmp=st.top();
st.pop();
start->next=tmp;
start=start->next;
}
start->next=NULL;
return head;
解法2:
ListNode* reverseList(ListNode* head) {
ListNode* start=head,*p,*q;
if(head==NULL || head->next==NULL)
return head;
//reverse
q=start->next;
//
while(q!=NULL)
{
p=q->next;
q->next=start;
start=q;
q=p;
}
head->next=NULL;
head=start;
return head;
}