当前位置 : 主页 > 网络编程 > 其它编程 >

算法练习帖71反转链表(C语言)

来源:互联网 收集:自由互联 发布时间:2023-07-02
反转链表一、题目描述定义一个函数输入一个链表的头节点反转该链表并输出反转后链表的头节点。题目来源力扣官网输入一个链表的头节点反转该链表并输出反转后链表的头节点。 题
反转链表一、题目描述定义一个函数输入一个链表的头节点反转该链表并输出反转后链表的头节点。题目来源力扣官网输入一个链表的头节点反转该链表并输出反转后链表的头节点。 题目来源力扣官网

示例:输入: 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.迭代法官方题解

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;}【本文来源:韩国服务器 http://www.558idc.com/kt.html欢迎留下您的宝贵建议】

上一篇:常用的操作xml文档的方法
下一篇:没有了
网友评论