链表分割
Posted 东风知我欲山行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表分割相关的知识,希望对你有一定的参考价值。
题目描述
以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。
ListNode* partition(ListNode* pHead, int x) { // write code here if (pHead == NULL || pHead->next == NULL) return pHead; ListNode* small=new ListNode(0); ListNode* big=new ListNode(0); ListNode *ps=small,*pb=big,*cur=pHead; while(cur) { if(cur->val<x) { ps->next=cur; ps=cur; } else { pb->next=cur; pb=cur; } cur=cur->next; } pb->next=nullptr; ps->next=big->next; return small->next; }
以上是关于链表分割的主要内容,如果未能解决你的问题,请参考以下文章