Reverse Every K Node In List(将每k个节点逆序)
题目描述:
给定一个链表的头结点head,和一个整数K。将链表中从头到尾链表中的每k个节点逆序,如果最后一段不足k个节点的不进行逆序。
例子:
1->2->3->4->5->6->7->8->NULL.给定的k值为3.则返回的链表排列为:3->2->1->6->5->4->7->8->NULL。
解题思路:
首先涉及到了逆序,第一个想法是利用栈的结构,能够帮助我们将链表中的数据逆序。所以新建一个栈结构和一个计数值,将链表中的值不断压栈,利用计数值来判断是否达到了K个节点。如果达到的话,则从栈中不断出栈数据,然后修改链表中的数据即可。
代码如下:
|
|
解题思路2:
当然我们也可以不用栈结构直接进行链表的调整。主要的思路是用start记录每k个节点的头,end用来记录k个节点的尾。然后直接将k个节点进行逆序。主要需要注意的地方有:第一组k个节点的尾部成为返回的头节点,需要记录;另外后面的每组k个节点,我们都需要将逆序后的k个节点的头部与上一组的k个节点的尾部重新连接。
代码如下:
|
|