{1,2,3,4}
, reorder it to
{1,4,2,3}
.
1->2->3->4
, you should return the list as
2->1->4->3
.
5.给定数组,小于该值的放左边,大于该值的放右边
6.链表递归反转
7.判断链表是否有环
8.链表归并排序
exp1.一个链表按值分成2个:
ListNode left_dummy(-1);//头结点
ListNode right_dummy(-1);
ListNode *left_cur=&left_dummy;//这一句相当的重要
ListNode *right_cur=&right_dummy;
ptr=head;
while(ptr)
{
if(ptr->val<x){
left_cur->next=ptr;
left_cur=ptr;//别忘了
}
else{
right_cur->next=ptr;
right_cur=ptr;
}
ptr=ptr->next;
}
ListNode* reverse(ListNode *head) {
if(head == NULL || head->next == NULL ) return head;
ListNode *prev=NULL,*pcur=NULL,*pnext=NULL;
pcur=head;//循环开始前,pcur指向第一个节点
while(pcur)
{
pnext=pcur->next;
pcur->next=prev;
prev=pcur;//有先后顺序,第一次时把pcur=pnext写在这里了,导致出错
pcur=pnext;
}
return prev;//循环完后,prev是指向的最后一个节点
题目:
Given a singly linked list L: L0→L1→…→Ln-1→Ln,