力扣解题小思-4

又来解力扣题了!这里还是关于链表的一道题目,之前也又一道题目是关于如何找到共同节点的链表相关题目,这里这是如何将一个单向链表的方向反过来。先回顾一下前面的一道题是如何做出来的,前面其实用到了一个关键的知识点,就是如何遍历单向链表,其中的关键是定义一个可变的指针,通过在循环语句中对指针指向的节点进行处理,同时将指针转变为下一个指针,从而可以遍历整个单向链表。而对于单向链表来说,并不能通过反向的指针进行循环,如果是双向链表的话就比较方便了。那能不能构造一个双向链表,然后通过这个双向链表得到目标的链表呢。可以试一下。
先看一下题目给出的条件,这里的提示依然是一个结构体,其中由数据和指针,然后给出的一个函数的函数名为reverseList,其返回的类型是指向该结构体的指针,同时输入的参数也是一个指向结构体类型的指针,也即单向链表头指针,所以要从这里开始进行设计。后来学习了如何构造新的链表,结果从中发现了如何实现这种功能,先说一下如何构造新的链表吧,就是先定义一个头指针并使之为空指针,然后再定义一个新节点,这个节点用来构造新加入的节点,在循环中对这个新节点用malloc函数赋予新的内存,因为每一次的内存都是不一样的,所以每一次赋值都是新的节点,然后将数据存入该节点,再将这个节点中的指针指向新头节点,最后将新头节点用新节点赋值,这样头节点就变成了这个新节点,最后不断重复,直到最后原来的链表到达最后的节点,这里其实用到了所谓的头插法,其速度比较快,但是所用内存比较大。还有一种方法是尾插法,就是将新节点作为最后一个节点,但是每次插值需要遍历链表,比较麻烦。

posted @ 2026-03-30 16:11  getacat  阅读(13)  评论(0)    收藏  举报