思路一:翻转链表

发布时间:2025-06-24 18:39:47  作者:北方职教升学中心  阅读量:018


在保证正常完成后,

工艺如下图1所示a;

思路二:头插法。

struct ListNode* reverseList(struct ListNode* head) { struct ListNode *cur = head; struct ListNode *newhead = NULL; while(cur) { struct ListNode *next = cur -> next; cur -> next = newhead; newhead = cur; cur = next; } return newhead;}。在遍历过程中,当cur指向的节点不是NULL时,,我们可以实现每个循环的逻辑:

curnext指向newhead实现以下操作:

以下操作实现了newhead指向cur:

cur指向next实现以下操作:


通过上述逻辑,￰一层一层c;直到cur对应的节点是空的,

n1࿰指针我们定义了三个节点c;n2,n3.NULL࿰分别指向c;head,head -> next。然后,

思路一:翻转链表。如果我的博客对你的学习有帮助,希望能得到你的三连~。

收录专栏:《Leetcode》。我们定义了两个结构指针,cur和newhead,用cur指向当前节点,从head开始;NUL࿰指向newheadc;newhead将作为链接新链表后面的表头。这意味着所有原始节点都被链接到新的链表上,链表反转完成。用next指向下一个节点,

解决思路。定义结构指针next,该指针用于暂时保存curnext,由于cur在连接过程中首先被用来链接到新的链表,这样就找不到之前链表中cur指向的下一个节点,因此,我们就可以通过三个指针临时存储每个节点󿀌在此基础上重新链接每个节点。

首先,

然后我们用while循环遍历链表󿀌直到cur指向NULL。

n1࿰指针我们定义了三个节点c;n2,n3.NULL࿰分别指向c;head,head -> next。以确保链表的整体遍历完成。

以上就是本文的全部内容~。指针通过while循环向后移动,n2位置的节点与n1之前的链接一一断开,然后将n2指向n1链接。

主页:17_Kevin-CSDN博客。


题目。

struct ListNode* reverseList(struct ListNode* head) {    if(head == NULL)    {        return NULL;    }    struct ListNode* n1 = NULL,*n2 = head,*n3 = n2 -> next;    while(n2 != NULL)    {        n2 -> next = n1;        n1 = n2;        n2 = n3;        if(n3 != NULL)        {            n3 = n2 -> next;        }    }    return n1;}。这样,

以上是本文的全部内容~。