反转链表
反转链表
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
/** * 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) { if(head==nullptr||head->next==nullptr) return head; ListNode *cur=head; int size=1; while(cur->next!=nullptr) { size++; cur=cur->next; } cur=head; for(int i=0;i<size-1;i++) { ListNode *tmp=cur->next; //标记原第二个结点 cur->next=cur->next->next; //原头结点指向第三个结点 tmp->next=head; //原第二个结点指向头结点 head=tmp; //原第二个结点标记为新头结点。 // ListNode *tmp=cur->next->next; //标记原第三个结点 // cur->next->next=head; //原第二个结点指向头结点。 // head=cur->next; //原第二个结点标记为新头结点 // cur->next=tmp; //新头结点指向原第三个结点 } return head; } };
浙公网安备 33010602011771号