给定一个链表和一个值x,编写函数,对该链表进行重排,使小于x的节点在前面

来源:互联网 发布:数据科学实战 pdf 编辑:程序博客网 时间:2024/04/29 15:30

题目:给定一个链表和一个值x,编写函数,对该链表进行重排,使小于x的节点都出现在大于或者等于x的节点的后面

分析:题目很简单,主要的做法就是创建一个哑节点指向头结点(原因:不知道哪一个节点会出现在头结点上),由于链表是是申请内存空间,最后要记得释放内存,否则会造成内存泄露。

参考答案:(实际运行的,绝对正确)

#include "stdafx.h"
#include<iostream>


using namespace std;


struct ListNode
{
int val;
    ListNode *next;
ListNode(int x): val(x),next(NULL){}
};


ListNode *reorderList(ListNode *head,int x)
{
ListNode *newHead=NULL;
ListNode *aDummy=new ListNode(0);
ListNode *aCurr=aDummy;
ListNode *bDummy=new ListNode(0);
ListNode *bCurr=bDummy;


while(head)
{
ListNode *next=head->next;
head->next=NULL;
if(head->val<x)
{
aCurr->next=head;
aCurr=head;
}
else
{
bCurr->next=head;
bCurr=head;
}
head=next;
}
aCurr->next=bDummy->next;
newHead=aDummy->next;


delete aDummy;
delete bDummy;


return newHead;
}



0 0
原创粉丝点击