如何用C语言实现长尾词反转链表算法?

2026-04-02 14:091阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计371个文字,预计阅读时间需要2分钟。

如何用C语言实现长尾词反转链表算法?

实现链表反转,定义一个函数输入链表的头节点,反转链表并输出反转后链表的头节点。

反转链表一、题目描述定义一个函数输入一个链表的头节点反转该链表并输出反转后链表的头节点。题目来源力扣官网输入一个链表的头节点反转该链表并输出反转后链表的头节点。 题目来源力扣官网

示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL

限制0 < 节点个数 < 5000

二、解决方法

1.头插法

struct ListNode* reverseList(struct ListNode* head){if(headNULL||head->nextNULL){//判断链表长度若为0或1则直接返回headreturn head;}struct ListNode* temphead->next;//临时中间结点head->nextNULL;//头结点初始指向NULLwhile(temp!NULL){struct ListNode* curtemp;//获取当前结点 temptemp->next;//获取下一结点cur->nexthead;//将头结点拼接在当前结点之后headcur;//赋值新的头结点}return head;}

2.迭代法官方题解

如何用C语言实现长尾词反转链表算法?

struct ListNode* reverseList(struct ListNode* head){struct ListNode* preNULL;//前一个结点struct ListNode* curhead;//当前结点while(cur){//当前结点不为NULL时struct ListNode* nextcur->next;//下一节点//三结点更新cur->nextpre;precur;curnext;}return pre;}

3.递归法(官方题解)

struct ListNode* reverseList(struct ListNode* head) {if (head NULL || head->next NULL) {//递归中止条件return head;}struct ListNode* newHead reverseList(head->next);//新头结点head->next->next head;//反转当前head结点和head->next的指向head->next NULL;//将head->next断链防止成环return newHead;}

本文共计371个文字,预计阅读时间需要2分钟。

如何用C语言实现长尾词反转链表算法?

实现链表反转,定义一个函数输入链表的头节点,反转链表并输出反转后链表的头节点。

反转链表一、题目描述定义一个函数输入一个链表的头节点反转该链表并输出反转后链表的头节点。题目来源力扣官网输入一个链表的头节点反转该链表并输出反转后链表的头节点。 题目来源力扣官网

示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL

限制0 < 节点个数 < 5000

二、解决方法

1.头插法

struct ListNode* reverseList(struct ListNode* head){if(headNULL||head->nextNULL){//判断链表长度若为0或1则直接返回headreturn head;}struct ListNode* temphead->next;//临时中间结点head->nextNULL;//头结点初始指向NULLwhile(temp!NULL){struct ListNode* curtemp;//获取当前结点 temptemp->next;//获取下一结点cur->nexthead;//将头结点拼接在当前结点之后headcur;//赋值新的头结点}return head;}

2.迭代法官方题解

如何用C语言实现长尾词反转链表算法?

struct ListNode* reverseList(struct ListNode* head){struct ListNode* preNULL;//前一个结点struct ListNode* curhead;//当前结点while(cur){//当前结点不为NULL时struct ListNode* nextcur->next;//下一节点//三结点更新cur->nextpre;precur;curnext;}return pre;}

3.递归法(官方题解)

struct ListNode* reverseList(struct ListNode* head) {if (head NULL || head->next NULL) {//递归中止条件return head;}struct ListNode* newHead reverseList(head->next);//新头结点head->next->next head;//反转当前head结点和head->next的指向head->next NULL;//将head->next断链防止成环return newHead;}