值x将链表划分为两部分,小于x的结点排在大于或等于x 的结点之前
2015-08-18 17:07
387 查看
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/panic.gif)
编写代码,以给定值x为基准将链表分割为两部分,所有小于x的结点将排在大于或等于x的结点之前。
/*传入链表的首结点,以及作为链表分割基准的值*/
#include<iostream>
using namespace std;
typedef struct node
{
int data;
struct node* next;
}* LinkedListNode;
LinkedListNode partition(LinkedListNode node, int x)
{
LinkedListNode beforeStart = NULL;
LinkedListNode beforend = NULL;
LinkedListNode afterStart = NULL;
LinkedListNode afterEnd = NULL;
/*分割链表*/
while (node != NULL)
{
LinkedListNode next = node->next;
node->next = NULL;
if (node->data < x)
{
/*将结点插入before链表*/
if (beforeStart == NULL)
{
beforeStart = node;
beforend = beforeStart;
}
else
{
beforend->next = node;
beforend = node;
}
}
else
{
/*将结点插入after链表*/
if (afterStart = NULL)
{
afterStart = node;
afterEnd = afterStart;
}
else
{
afterEnd->next = node;
afterEnd = node;
}
}
node = next;
}//end while
if (beforeStart == NULL)
return afterStart;
//合并before和after链表
beforend->next = afterStart;
return beforeStart;
}
/*传入链表的首结点,以及作为链表分割基准的值*/
#include<iostream>
using namespace std;
typedef struct node
{
int data;
struct node* next;
}*LinkedListNode;
LinkedListNode partition(LinkedListNode node, int x)
{
LinkedListNode beforeStart = NULL;
LinkedListNode afterStart = NULL;
/*分割链表*/
while (node != NULL)
{
LinkedListNode next = node->next;
node->next = NULL;
if (node->data < x)
{
/*将结点插入before链表的前端*/
node->next=beforeStart;
beforeStart = node;
}
else
{
/*将结点插入after链表*/
node->next=afterStart;
afterStart=node;
}
node = next;
}//end while
if (beforeStart == NULL)
return afterStart;
//合并before和after链表
while (beforeStart->next != NULL)
{
beforeStart = beforeStart->next;
}
beforeStart->next = afterStart;
return beforeStart;
}
相关文章推荐
- css
- repalce方法中/g的使用
- 使用Java 8 Lambda表达式对Employee类进行操作
- 深入hibernate的三种状态
- 建立二叉树和输出
- HDU 5399 Too Simple
- Android中自定义drawable states
- 求二叉树的深度
- 利用 mount 指令解决 Read-only file system的问题
- JAVA连接oracle数据库,并执行查询
- IOS:身份证格式验证
- 将旧的推送通知从通知中心移除掉
- Android 系统属性SystemProperty分析
- Spring@Autowired注解与自动装配
- HDUOJ_2112(HDU Today )(dijkstra)
- Spring+Mysql中文乱码
- 网络数据请求
- HDU 5400 Arithmetic Sequence(数学)——多校练习9
- IOS学习之Foundation框架—集合
- 升级到win10之后怎么不能上网了 升级Win10无法上网的解决办法