网站建设公司哪里有,羞差视频免费首入口网页,网站建设贰金手指科捷6,厦门网站外包目录 前言
一.思路
1#xff09;创建新链表
2#xff09;创建三个指针 二.代码实现 搭配食用更佳哦~~ 数据结构之单单单——链表-CSDN博客 数据结构之单链表的基本操作-CSDN博客 前面学了单链表的相关知识#xff0c;我们来尝试做一下关于顺序表的经典算法题~ 前言 反转…目录 前言
一.思路
1创建新链表
2创建三个指针 二.代码实现 搭配食用更佳哦~~ 数据结构之单单单——链表-CSDN博客 数据结构之单链表的基本操作-CSDN博客 前面学了单链表的相关知识我们来尝试做一下关于顺序表的经典算法题~ 前言 反转链表同样也是力扣上一道简单题适合刚学过单链表的我们更好的理解链表相关知识~当然最好大家可以先去力扣上自己 try 一下~~
206. 反转链表 - 力扣LeetCodehttps://leetcode.cn/problems/reverse-linked-list/description/
一.思路 题目不多赘述只要眼珠子不是喘气的都能看懂
1创建新链表 创建新链表的思路和上一篇讲的大同小异创建两个头尾指针将原链表的拿过来进行头插就可以将链表反转 因为在此题这种方法算不上最简洁的方法所以也不多赘述有兴趣的可以去看上一篇的思路附上链接~
手撕C语言题典——移除链表元素单链表-CSDN博客https://blog.csdn.net/Antigonos/article/details/138647423?spm1001.2014.3001.5501
2创建三个指针 我们创建 n1 n2 n3 三个指针n1 指向空n2 指向链表的头节点 n3 指向 n2 的下一个节点也就是头节点的下一个节点如此便可逐步翻转。我们让 n2 的 next 指针不再指向 n3而是指向 n1然后三个指针依次移动n1 代替 n2 n2 代替 n3n3指向 n2 的下一个节点 然后再次重复以上步骤将 n2 指向 n3 的指针指向 n1到最后 n3 后面没有下一节点了就可以跳出循环此时 n1 指针指向的就是新链表的头指针了。 循环完成 创建三指针的思路就可以理顺了
让 n2 的 next 指针指向 n1n1 n2n2 n3n3 n3 - next 二.代码实现
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
typedef struct ListNode ListNode;
struct ListNode* reverseList(struct ListNode* head) {//判断为空if(headNULL){return head;}//创建三个指针ListNode*n1,*n2,*n3;n1 NULL,n2 head,n3 n2-next;while(n2){n2-next n1;n1 n2;n2 n3;if(n3)n3 n3 - next;}return n1;
}
需要注意的是题目中给了提示
我们需要判断链表是否为空如果为空直接返回头节点就行。
这道题到这就结束啦~是不是还蛮简单的第二个思路虽然难想一点但只要理解了代码就非常简洁~~
下一篇会接着将另一道有关链表的算法题~~
完结撒花