Java已知链表的头结点head,写一个函数把这个链表逆序

以下是一个简单的Java函数,用于将链表逆序。在这个函数中,我们使用递归的方法。

 

public class ListNode {

    int val;

    ListNode next;

    ListNode(int x) { val = x; }

}

 

public class Solution {

    public ListNode reverseList(ListNode head) {

        if (head == null || head.next == null) {

            return head;

        }

        ListNode newHead = reverseList(head.next);

        head.next.next = head;

        head.next = null;

        return newHead;

    }

}

在这个函数中,我们首先检查链表是否为空或只有一个节点。如果是这样,我们不需要做任何事情,直接返回头节点。然后我们递归地反转剩余的链表,并把新的头节点存储在newHead中。然后我们把头节点的下一个节点设置为它的前一个节点(这就是反转链表的关键步骤),然后把头节点的下一个节点设置为null。最后,我们返回新的头节点。

比较简单的不使用递归的例子

 

Node * ReverseList(Node*head) //链表逆序
{
if ( head == NULL || head->next == NULL )
returnhead;
Node *p1 = head ;
Node *p2 = p1->next ;
Node *p3 =p2->next ;
p1->next = NULL ;
while ( p3 != NULL )

{

p2->next = p1 ;

p1 = p2 ;

p2 = p3 ;

p3 = p3->next ;

}

p2->next = p1 ;

head = p2 ;

return head ;

}

 

 

你可能感兴趣的:(java)