首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LeetCode刷题(1)【链表】【反转链表】(C语言)

反转链表 - 力扣(LeetCode) (leetcode-cn.com) ---- 反转链表 思路一:反转指针。 本质上就是调转指针方向。 首先我们定义两个指针,一个叫n1,一个叫n2。...因为: 这里让n2->next指向n1,就是把n1值存到n2next上,n2->next原来存是2地址,现在存是NULL,但是继续往后走时候,我们发现找不到2了 。...所以要反转指针,两个指针是反不动,要用3个。 前两个指针 反转,最后一个指针负责记录下一个位置。...什么时候结束 n2 == NULL; ---- 重复条件用循环解决 初始条件 迭代过程 结束条件 画图看起来很浪费时间,但提升了写代码体验,更好解决问题。...文字简单描述: ​ 从原链表去一个点下来,放到新链表中,当做新链表头结点cur = newhead, 迭代往后走,取下一个结点… 代码实现: /** * Definition for singly-linked

35610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言链表详解_c语言链表使用

    链表是一种常见基础数据结构,结构体指针在这里得到了充分利用。...链表可以动态进行存储分配,也就是说,链表是一个功能极为强大数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节点。链表都有一个头指针,一般以head来表示,存放是一个地址。...链表节点分为两类,头结点和一般节点,头结点是没有数据域链表中每个节点都分为两部分,一个数据域,一个是指针域。...作为有强大功能链表,对他操作当然有许多,比如:链表创建,修改,删除,插入,输出,排序,反序,清空链表元素,求链表长度等等。...下面是一个传入链表和要修改节点,来修改值函数。

    4.2K10

    c 语言实现链表反转(超详细,有手就行)

    题目描述如下: 思路分析: 我们在对数组进行反转时候,通常定义俩个指针,一个指向首元素,一个指向尾元素,然后借助一个中间变量,将俩者交换,然后首元素++;尾元素--;重复操作直到头元素大于等于尾元素...但链表不同,它空间是动态分配,即地址不一定是连续。 那么如何实现呢? 头插 我想法是用三个指针,先分别记录下前面三个结点。...这就是我描述过程。 这也是基本情况之一,我们还应该注意,如果链表中无数据,或者只有一个数据是不需要进行操作!...以下是代码实现: /** * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static...return ListNode类 */ struct ListNode* ReverseList(struct ListNode* phead) { if (phead == NULL) //如果是空链表直接返回

    41430

    反转链表

    题目描述 给你单链表头节点 head ,请你反转链表,并返回反转链表。 吴师兄思路 如果想细致理解递归细节点,那么这道题目十分合适。...1、通过递归函数,一直递归到链表最后一个结点为止,此时,该结点就是反转成功后头结点,是最终返回结果。 2、在递归函数中,让当前节点下一个节点 next 指针指向当前节点。...3、在递归函数中,让当前节点 next 指针指向 null 4、通过二三步操作,已经让递归函数中链表实现了局部反转,将结果返回给上一层递归函数 5、所有递归结束后,链表反转成功 吴师兄参考代码...; // 我们把每次反转结果传递给上一层 return cur; } } 2、C++ 版本 // 登录 AlgoMooc 官网获取更多算法图解 // https...# 我们把每次反转结果传递给上一层 return cur END

    74940
    领券