反转链表(剑指offer-15)
方法1:递归
/*
public class ListNode {
int val;
ListNode next = null; ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null || head.next==null){
return head;
}
ListNode next = head.next;
ListNode newHead = ReverseList(next);//先反转后面的链表,从最后面两个节点开始反转,依次向前
next.next = head;//将后一个链表节点指向前一个节点
head.next = null;//将原链表中前一个节点指向后一个节点的指向关系断开
return newHead;
}
}
方法2:非递归(修改每个节点的next指向上一个节点)

/*
public class ListNode {
int val;
ListNode next = null; ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
//第一步,定义引用pre指向null,cur指向头结点,cur代表当前结点,pre代表当前结点的上一个结点
ListNode pre = null;
ListNode cur = head;
//第二步,循环。先定义一个临时引用temp指向cur的下一个结点
ListNode temp = null;
while (cur != null) {
//(1)temp指向cur的下一个结点
temp = cur.next;
//(2)cur的next指向cur的上一个结点
cur.next = pre;
//(3)pre和cur右移,pre指向cur结点,cur指向temp结点
pre = cur;
cur = temp;
}
//循环结束后,cur和temp都指向null,pre指向原来链表的最后一个结点,此时为已经反转的链表的头结点
//第三步,head指向最后一个结点
head = pre;
return head;
}
}
方法3:头插法


/*
public class ListNode {
int val;
ListNode next = null; ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode root = new ListNode(-1);//逻辑头节点位于-1的位置
ListNode next = null;//记录要处理的下一个节点
while(head != null){
next = head.next;// 记录要处理的下一个结点 1 2 3 4 5
head.next = root.next; // 当前结点的下一个结点指向逻辑头结点的下一个结点
root.next = head;// 逻辑头结点的下一个结点指向当前处理的结点
head = next;//开始处理下一个节点
}
return root.next;
}
}
反转链表(剑指offer-15)的更多相关文章
- 反转链表 --剑指offer
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反正后链表的头结点. #include<stdio.h> #include<malloc.h> typedef str ...
- 反转链表[剑指offer]之python实现
输入一个链表,输出反转后的链表. 非递归实现: # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val ...
- 剑指 Offer 15. 二进制中1的个数
剑指 Offer 15. 二进制中1的个数 Offer 15 题目描述: 方法一:使用1逐位相与的方式来判断每位是否为1 /** * 方法一:使用1逐位与的方法 */ public class Off ...
- 刷题-力扣-剑指 Offer 15. 二进制中1的个数
剑指 Offer 15. 二进制中1的个数 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de- ...
- 【Java】 剑指offer(15) 数值的整数次方
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 实现函数double Power(double base, int ...
- 剑指offer 15.链表反转
15.链表反转 题目描述 输入一个链表,反转链表后,输出新链表的表头. PHead,pre, next分别指向当前结点, 前一个结点, 后一个结点,每次迭代先更新当前结点的指针,记录下个结点的指向,转 ...
- 剑指offer 15:反转链表
题目描述 输入一个链表,反转链表后,输出新链表的表头. 法一:迭代法 /* public class ListNode { int val; ListNode next = null; ListNod ...
- 剑指Offer 15. 反转链表 (链表)
题目描述 输入一个链表,反转链表后,输出新链表的表头. 题目地址 https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca? ...
- [剑指Offer] 15.反转链表
题目描述 输入一个链表,反转链表后,输出链表的所有元素. [思路1]三个指针在链表上同时滑动. /* struct ListNode { int val; struct ListNode *next; ...
- 剑指offer 15:链表的倒数第k个节点
题目描述 输入一个链表,输出该链表中倒数第k个结点. 解题思路 使用快慢指针法,让快指针先走k步,然后再让慢指针开始走,当快指针到达链表尾部时,慢指针刚好到达倒数第k个节点. C++代码实现: /* ...
随机推荐
- 06.Django-用户认证
用户认证 Django 内置一个 auth 模块,帮助用户实现注册.登录.注销以及修改密码等功能,帮助开发者省去了很多功夫 用于认证的数据表 auth_user User是auth模块中维护用户信息的 ...
- k8s+docker部署Golang项目
Go环境搭建 root账户 下载Golang [root@infra2-test-k8s /]# cd /usr/local/ [root@infra2-test-k8s local]# wget h ...
- js循环练习
var a=1; while(a>0){ var b=prompt('input number'); if(b>a){ alert('big'); } else if(b<a){ a ...
- 数值格式化 NumberFormat、 DecimalFormat、 RoundingMode
NumberFormat [简介] java.text.NumberFormat extends java.text.Format extends java.lang.Object 实现的接口:Ser ...
- 【转载】图解NumPy
目录 1. 读写文件 2. 内建向量/矩阵 3. 切片操作 4. 聚合函数 4.1. 向量 4.2. 矩阵 5. 矩阵的转置和重构 6. 常用操作API 7. 应用实例 7.1. 生成向量.矩阵 7. ...
- Redis学习笔记(二十一) 事务
文章开始啰嗦两句,写到这里共21篇关于redis的琐碎知识,没有过多的写编程过程中redis的应用,着重写的是redis命令.客户端.服务器以及生产环境搭建用到的主从.哨兵.集群实现原理,如果你真的能 ...
- 最全面的SourceTree账号注册教程
前言: 作为一个国内开发者而言使用Git操作神器SoureTree最大的问题就是账号注册问题,因为注册账号的链接在不翻墙的情况下基本上是打不开的(弄过的童鞋应该都体会过),所以有的时候我们需要借助一些 ...
- 1.二进制部署kubernetes
目录 kubernetes的五个组件 master节点的三个组件 kube-apiserver kube-controller-manager kube-scheduler node节点的两个组件 k ...
- 登录CentOS用户很慢/usr/bin/xauth: timeout in locking authority file /home/***/.Xauthority
当使用非root用户登录CentOS时,发现很慢,而且弹出以下信息: /usr/bin/xauth: timeout in locking authority file /home/***/.Xau ...
- Java-CORBA
本文HelloCorba参考 Getting Started with JavaTM IDL 说在前面 Java TM IDL is a technology for distributed obje ...