首页 > 其他分享 >反转链表

反转链表

时间:2023-07-16 18:47:23浏览次数:30  
标签:tmp head ListNode struct 反转 next 链表 newhead

`/**

  • Definition for singly-linked list.
  • struct ListNode {
  • int val;
    
  • struct ListNode *next;
    
  • };
    */

struct ListNode* reverseList(struct ListNode* head){
struct ListNode* newhead = NULL,tmp;
while(head){
/
tmp = head->next;
head->next = newhead;
newhead = head;
head = tmp;//保存head->next,接下来将1独立拿出来,head->next = NULL;*/
tmp = head;
head = head->next;
tmp->next = newhead;
newhead = tmp;
}
return newhead;
}`
如果tmp = head->next和tmp = head区别在于前者保存了下一个结点,而后者是暂存当前结点,所以后者不能上来就head->next = newhead,会丢失后面下一个结点。
两个写法的newhead含义恰恰相反,前者newhead是暂存当前结点,后者由于头节点已经向后移动了,导致newhead暂存的是下一结点。

标签:tmp,head,ListNode,struct,反转,next,链表,newhead
From: https://www.cnblogs.com/lb2410625342/p/17558310.html

相关文章

  • 用java写一个逆置单链表
    用Java写一个逆置单链表单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的引用。逆置单链表是指将原来的单链表中的节点顺序颠倒过来。在这篇文章中,我们将使用Java来实现逆置单链表的功能。我们将会介绍单链表的基本概念,并给出逆置单......
  • 用java创建一个单链表
    使用Java可以很方便地创建和操作数据结构,其中包括单链表。单链表是一种常见的线性数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。这种数据结构可以用于实现队列、栈、链表等等。在本文中,我们将学习如何使用Java创建一个单链表,并演示一些基本的操作。首先,我......
  • 数据结构练习笔记——创建有序单链表
    创建有序单链表【问题描述】为从键盘终端输入的m个整数创建带头结点的有序单链表存储结构,使输入的数据元素在单链表中按照元素值递增有序。【输入形式】第一行:单链表中元素个数m第二行:单链表中的m个整数【输出形式】按递增有序形式输出m个整数【样例输入】513245【......
  • Java性能优化-测试数组和链表在查询和添加删除时性能对比
    场景Java中使用JMH(JavaMicrobenchmarkHarness微基准测试框架)进行性能测试和优化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131723751上面在使用JMH时测试了Java中数组和链表在进行头部插入时的对比结果。下面分别对比在头部、中部、尾部分别进行查询和......
  • pytorch使用(三)用PIL(Python-Imaging)反转图像的颜色
    1.多数情况下就用这个,不行再看下面的fromPILimportImageimportPIL.ImageOps#读入图片image=Image.open('your_image.png')#反转inverted_image=PIL.ImageOps.invert(image)#保存图片inverted_image.save('new_name.png')2.如果图像是RGBA透明的,参考如下代码......
  • C语言:数据结构之单链表(四)
    本篇谈一谈单链表的改,具体操作就是找到他,然后修改元素即可,上一篇有相关代码,可以参考。改函数代码如下:voidCorrect(LinkListheader,intsite_,charletter_){LinkListq=Search_Site(header,site_);q->letter=letter_;}main函数如下:(修改第6,......
  • LeetCode 21.合并两个有序链表
    题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]classSolution(object):defmerg......
  • 数据结构练习笔记——输出单链表倒数第k个元素
    输出单链表倒数第k个元素【问题描述】已知带头结点的非空单链表中存放着若干整数,请找出该链表中倒数第k个元素。【输入形式】第一行:单链表中元素个数m,第二行:单链表中的m个整数,第三行:k值【输出形式】倒数第k个元素的值(不存在倒数第k个元素输出"no")【样例1】输入:5132450......
  • 链表操作
    1.单链表逆序,要求在原链表数据不改变的情况下进行逆序方法一:新建一个头节点,将链表中的元素一个一个放入新的头节点structListNode*reverseList(structListNode*head){structListNode*n=malloc(sizeof(structListNode));n->next=NULL;structListNode......
  • day03 链表基本操作
    前置知识,链表数据结构1.移除链表元素移除链表元素不难,只需要把前一个结点的下一节点指向下一个节点的下一节点如果当前遍历的节点与所给值相等,则需要移除此元素,移除元素是将上一节点的next域设置为当前节点的next,当前节点后移一位如果当前遍历的节点值不等于所给值,则前驱......