给定一个链表,再给定一个整数 pivot,请将链表调整为左部分都是值小于 pivot 的节点,中间部分都是值等于 pivot 的节点, 右边部分都是大于 pivot 的节点。 除此之外,对调整后的节点顺序没有更多要求。
输入描述:
第一行两个整数 n 和 pivot,n 表示链表的长度。第二行 n 个整数 ai 表示链表的节点。
输出描述:
请在给定的函数内返回链表的头指针。
示例1
输入
5 3 9 0 4 5 1
输出
1 0 4 5 9
加载中...
# include
using namespace std; struct list_node{ int val; struct list_node * next; }; int pivot; list_node * input_list(void) { int n, val; list_node * phead = new list_node(); list_node * cur_pnode = phead; scanf("%d%d", &n, &pivot); for (int i = 1; i <= n; ++i) { scanf("%d", &val); if (i == 1) { cur_pnode->val = val; cur_pnode->next = NULL; } else { list_node * new_pnode = new list_node(); new_pnode->val = val; new_pnode->next = NULL; cur_pnode->next = new_pnode; cur_pnode = new_pnode; } } return phead; } list_node * list_partition(list_node * head, int pivot) { //////在下面完成代码 } int main () { list_node * head = input_list(); list_partition(head, pivot); return 0; }
5 3 9 0 4 5 1
1 0 4 5 9