/**
* 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 == NULL)
{
return head;
}
ListNode *tail = head;
head=head->next;
tail->next = NULL;
while(head!=NULL)
{
ListNode *temp = head->next;
head->next = tail;
tail = head;
head = temp;
}
return tail;
}
void reorderList(ListNode *head) {
if(head==NULL||head->next==NULL||head->next->next==NULL)
{
return ;
} //用快慢指针判断长度为偶数还是奇数,并找出中间元素
ListNode *slow = head;
ListNode *fast = head;
while(fast->next!=NULL&&fast->next->next!=NULL)
{
fast=fast->next->next;
slow=slow->next;
}
ListNode *mid = slow->next;
slow->next=NULL;
ListNode *newHead = reverseList(mid);
//通过翻转第二个矩阵获得的头结点作为新的节点
while(newHead!=NULL)
{
ListNode *temp = newHead->next;
newHead->next = head->next;
head->next = newHead;
head = newHead->next;
newHead = temp;
}
}
};关于reverse
关于最后merge链表

京公网安备 11010502036488号