1. 思路
新建里两个链表,
一个存放比x小的数;
另一个存放比x大的数;
最后连接两个链表
2.代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
/*
思路:
创建两个链表,分别存放 小的节点 和 大的节点
然后连接两个链表
*/
ListNode* frist_head = new ListNode(-1);
ListNode* second_head= new ListNode(-1);
ListNode* frist = frist_head;
ListNode* second= second_head;
while(head)
{
if(head->val < x)
{
frist->next = head;
frist = frist->next;
}
else
{
second->next = head;
second = second->next;
}
head = head->next;
}
second->next = NULL;
frist->next = second_head->next;
return frist_head->next;
}
};
3.思考
对俩表的操作,其中是最终就是对两个对象进操作
一个是 链表的值;
再一个是链表关联到的两个地址:
一个是指向它的地址,通过这个地址我们可以找到这个节点;
一个是它指向的地址,通过这个地址,这个节点链接到下一个节点;
对链表进行移位操作,就是将某个节点的第一地址,赋予另一个节点第二个地址