您的位置:首页 > 编程语言 > C语言/C++

作业8.96:链表划分

2017-03-30 13:10 260 查看
题目:链表划分

样例:

给定1->4->3->2->5->2->null,并且x=3。

返回1->2->2->4->3->5->null。

思路:设置两个新链表small和big,遍历原始链表,小于x的元素放在small里,大于x的元素放在big里,然后big连在small后面返回。

代码:

class Solution {
public:
/**
* @param head: The first node of linked list.
* @param x: an integer
* @return: a ListNode
*/
ListNode *partition(ListNode *head, int x) {
// write your code here
if(head==NULL)
return NULL;
ListNode *small=new ListNode(0);
ListNode *big=new ListNode(0);
ListNode *p=small;
ListNode *q=big;
while(head!=NULL)
{
if(head->val<x)
{
p->next=head;
p=p->next;
}
else
{
q->next=head;
q=q->next;
}
head=head->next;
}
q->next=NULL;
p->next=big->next;
return small->next;
}
};

感想:一开始没有令q->next=NULL,运行总是显示内存不够,空间复杂度超标,调了好多地方才找到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++作业