给定一个单链表,实现一个调整单链表的函数,使得每 K 个节点之间的值逆序,如果最后不够 K 个节点一组,则不调整最后几个节点。
输入描述:
第一行一个整数 n,n 表示单链表的节点数量。第二行 n 个整数 val 表示链表的各个节点的值。第三行一个整数 K。
输出描述:
在给定的函数内返回链表的头指针。
示例1
输入
5 1 2 3 4 5 3
输出
3 2 1 4 5
加载中...
# include
using namespace std; struct list_node{ int val; struct list_node * next; }; list_node * input_list() { int val, n; scanf("%d", &n); list_node * phead = new list_node(); list_node * cur_pnode = phead; 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 * reverse_knode(list_node * head1, int K) { //////在下面完成代码 } void print_list(list_node * head) { while (head != NULL) { printf("%d ", head->val); head = head->next; } puts(""); } int main () { list_node * head = input_list(); int K; scanf("%d", &K); list_node * new_head = reverse_knode(head, K); print_list(new_head); return 0; }
5 1 2 3 4 5 3
3 2 1 4 5