NC23划分链表
//解题思路
//lesshead-lesstail
//greaterhead-greatertail
//用哨兵位的头节点对less和greater进行初始化
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
//对less和greater定义
//然后使用哨兵位头节点进行初始化
ListNode*lesshead,*lesstail;
ListNode*greaterhead,*greatertail;
lesshead=lesstail=new ListNode(-1);
greaterhead=greatertail=new ListNode(-1);
//划分
ListNode*cur=head;
while(cur){
if(cur->val<x){
lesstail->next=cur;
lesstail=lesstail->next;
}else{
greatertail->next=cur;
greatertail=greatertail->next;
}
cur=cur->next;
}
//后面那个链表greater置空
greatertail->next=nullptr;
//链接
lesstail->next=greaterhead->next;
//return要注意哨兵位头节点
return lesshead->next;
}
};