leetcode-206翻转链表
关注囧囧妹了解更多的编程知识
题目:
-
反转一个单链表。可以迭代或递归地反转链表。
-
示例:输入: 1->2->3->4->5->NULL;输出: 5->4->3->2->1->NULL。
算法说明:
声明两个临时变量tmp和prev,且初始值为NULL;
当遍历节点不为NULL则循环以下四步:
1,将链表要翻转的当前节点的next节点保存到tmp;
2,将当前节点的next节点指向前一个节点prev;
3,更新前一个节点prev为当前节点;
4,更新遍历的节点为tmp;
解法:
【1】C语言解法:
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * struct ListNode *next; 6 * }; 7 */ 8 9 10 struct ListNode* reverseList(struct ListNode* head){ 11 struct ListNode *tmp = NULL; 12 struct ListNode *prev = NULL; 13 14 while(head != NULL) 15 { 16 tmp = head->next; 17 head->next = prev; 18 prev = head; 19 head = tmp; 20 } 21 return prev; 22 }
结果:
【2】go语言解法:
1 /** 2 * Definition for singly-linked list. 3 * type ListNode struct { 4 * Val int 5 * Next *ListNode 6 * } 7 */ 8 func reverseList(head *ListNode) *ListNode { 9 var cur *ListNode 10 var prev *ListNode 11 cur = nil 12 prev = nil 13 14 for head != nil{ 15 cur = head.Next 16 head.Next = prev 17 prev = head 18 head = cur 19 } 20 return prev 21 }
结果:
【3】python语言解法:
1 # Definition for singly-linked list. 2 # class ListNode(object): 3 # def __init__(self, x): 4 # self.val = x 5 # self.next = None 6 7 class Solution(object): 8 def reverseList(self, head): 9 """ 10 :type head: ListNode 11 :rtype: ListNode 12 """ 13 cur,prev = head,None 14 while cur: 15 cur.next,prev,cur = prev,cur,cur.next 16 return prev
结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探