struct ListNode* oddEvenList(struct ListNode* head ) { // write code here struct ListNode *oddp=head,*evenHead,*evenEnd,*temp; if(head==NULL||head->next==NULL||head->next->next==NULL) return head; temp=oddp->next; oddp->next=temp->next; temp->next=NULL; evenHead=temp; evenEnd=temp; oddp=oddp->next; while(oddp!=NULL&&oddp->next!=NULL)//分别对应结点为偶数和奇数个 { temp=oddp->next; oddp->next=temp->next; temp->next=NULL; evenEnd->next=temp; evenEnd=temp; temp=oddp; oddp=oddp->next; } if(!oddp) temp->next=evenHead;//结点为偶数个时 else oddp->next=evenHead;//结点为奇数个时 return head; }