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

反转链表

时间:2023-06-03 16:03:05浏览次数:37  
标签:begin ListNode 反转 next 链表 end NULL

反转链表最常用的就是双指针法了

图解:

首先,创建两个指针,begin和end,一个begin为空,一个end指向链表开头1。

然后begin=end;end往后移动指向像一个节点,如下图

重复以上步骤,直到end为空。

代码如下

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
ListNode* begin,*end;
begin=NULL;
end=head;

while(end!=NULL)
{
ListNode* temp=end->next;
end->next=begin;
begin=end;
end=temp;
}

return begin;
    }
};

 

标签:begin,ListNode,反转,next,链表,end,NULL
From: https://www.cnblogs.com/HaveFunnyAnyone/p/17454091.html

相关文章

  • 整数反转
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<math.h>intmain(){ longlonga,d; intb,c=0; printf("inputanumber:\n"); scanf_s("%lld",&a); d=pow(2,31); while(1) { if(a==0){  pr......
  • 数据仓库之订单拉链表实战
    什么是拉链表针对订单表、订单商品表,流水表,这些表中的数据是比较多的,如果使用全量的方式,会造成大量的数据冗余,浪费磁盘空间。所以这种表,一般使用增量的方式,每日采集新增的数据。在这注意一点:针对订单表,如果单纯的按照订单产生时间增量采集数据,是有问题的,因为用户可能今天下单,明......
  • 初级数据结构--双链表、循环链表
    双链表结构体内含有两个指针域。相比单链表,双链表每个节点多了一个存储前一节点的指针。对节点的增加、删除操作比单链表便捷,不用独立指针记录前一节点voidInitDNodeList(DNode**D){ *D=(DNode*)malloc(sizeof(DNode)); if(!*D) return; (*D)->front=NULL; (*D)->nex......
  • [Python]-numpy模块-反转数组的三种方法
    给定一个一维numpy数组,反转数组的三种方法:切片索引numpy.flipud()函数numpy.flip()函数importnumpyasnpa=np.array([1,2,3,4,5])#切片索引ans1=a[::-1]print(ans1)#[54321]#numpy.flipud()函数ans2=np.flipud(a)print(ans2)#[54321]#n......
  • 算法题分析:反转整数
    最近刷到了一道medium难度的算法题,比较典型,可以用语法特性和常规解法来解决。题目如下:给定一个32字节的有符号整型数字x,将x反转过来返回。如果反转x会让其数值超出32位有符号整型数字范围[-2^31,2^31-1],那么就返回0。假设运行环境不允许你存储64位整型数字(有符号或者无符号)。......
  • 初级数据结构--单链表3
    表头插入//批量头插voidListHead_Insert(LNode*L){ intvalue=0; LNode*p=L; while(1) { scanf("%d",&value); if(9999==value) break; LNode*newLNode=(LNode*)malloc(sizeof(LNode)); newLNode->data=value; newLNode->nex......
  • 3.单向链表-企业版
    #define_CRT_SECURE_NO_WARNINGS//2023年6月1日14:56:43#include<stdio.h>#include<string.h>#include<stdlib.h>//节点结构体structLinkNode{ //只维护指针域数据域由用户自己开辟 structLinknode*next;};//链表结构体structLList{ structLinkNodepHeade......
  • C语言链表
    #define_CRT_SECURE_NO_WARNINGS#include<stdlib.h>#include<string.h>#include<stdio.h>/*structTeacher{charname[64];intid;char*p;char**p2;};typedefstructTeacherTeacher;*/typedefstructStudent......
  • 链表归并排序
    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。/*structListNode{intval;structListNode*next;ListNode(intx):val(x),next(NULL){}};*/classSolution{public:ListNode*Merge(......
  • 链表的相关操作
    链表的相关操作#pragmaonce//编程的接口(API)//*.h文件中一般会放:类型的定义,函数的声明,全局变量#include<stdbool.h>typedefstructnode{ intval; structnode*next;}Node;typedefstruct{ Node*head; Node*tail; intsize;}List;List*create_......