本文主要是介绍反转单链表的前k个结点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 题目及要求
1.1 题目描述
反转单链表的前k个结点
解题思路:
每次将旧链表的头结点指向下一个结点的下一个结点,并把下一个结点掉到最前面。
2 解答
2.1 代码
ListNode *reverse_front_k_node(ListNode *node, int k) { if (!node) return NULL;assert(k>=1);int cnt=0;while(node){++cnt;node=node->next;}if(k>cnt) k=cnt;ListNode *p = node->next;ListNode *newHead = node;for(int i=1;i<k;++i) {node->next = p->next;p->next = newHead;newHead = p;p = node->next;}return newHead;
}
这篇关于反转单链表的前k个结点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!