From 25b4f2abd597ffba22cccea8587d00540577197d Mon Sep 17 00:00:00 2001 From: Steve Lee Date: Fri, 15 Dec 2017 09:37:26 +0800 Subject: add some solution --- Computer_Science/leetcode/86-partition_list.c | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Computer_Science/leetcode/86-partition_list.c (limited to 'Computer_Science/leetcode/86-partition_list.c') diff --git a/Computer_Science/leetcode/86-partition_list.c b/Computer_Science/leetcode/86-partition_list.c new file mode 100644 index 0000000..0deceb8 --- /dev/null +++ b/Computer_Science/leetcode/86-partition_list.c @@ -0,0 +1,52 @@ +#include +#include + +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * struct ListNode *next; + * }; + */ +struct ListNode { + int val; + struct ListNode *next; +}; +struct ListNode* partition(struct ListNode* head, int x) { + struct ListNode *hl = NULL; + struct ListNode *tl = NULL; + struct ListNode *hg = NULL; + struct ListNode *tg = NULL; + struct ListNode *tmp; + + if(head == NULL) return head; + + for(; head != NULL; head = head->next) { + tmp = malloc(sizeof(struct ListNode)); + tmp->val = head->val; + tmp->next = NULL; + if(head->val < x) { + if(tl == NULL) + hl = tl = tmp; + else { + tl->next = tmp; + tl = tl->next; + } + } + else { + if(tg == NULL) + hg = tg = tmp; + else { + tg->next = tmp; + tg = tg->next; + } + } + } + + if(hl != NULL) { + tl->next = hg; + } else + return hg; + + return hl; +} -- cgit v1.2.3