博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【面试题】反转单链表
阅读量:5089 次
发布时间:2019-06-13

本文共 1672 字,大约阅读时间需要 5 分钟。

面试题 反转单链表

1、迭代法
1306719-20190323215144741-26643174.png

2、递归法

1306719-20190323215401506-1587938844.png

Java 实现

class ListNode {    int val;    ListNode next;    ListNode(int val) {        this.val = val;        next = null;    }    @Override    public String toString() {        return val + "->" + next;    }}public class ReverseListedList {    public static void main(String[] args) {        ListNode head = new ListNode(1);        ListNode a = new ListNode(2);        ListNode b = new ListNode(3);        ListNode c = new ListNode(4);        ListNode d = new ListNode(5);        head.next = a;        a.next = b;        b.next = c;        c.next = d;        System.out.println("链表反转前:" + head);        head = reverseListByIterative(head);        System.out.println("迭代反转后:" + head);        head = reverseListByRecursive(head);        System.out.println("递归反转后:" + head);    }    public static ListNode reverseListByIterative(ListNode head) {        if (head == null)            return head;        ListNode dummy = new ListNode(-1);        dummy.next = head;        ListNode prev = dummy.next;        ListNode pcur = prev.next;        while (pcur != null) {            prev.next = pcur.next;            pcur.next = dummy.next;            dummy.next = pcur;            pcur = prev.next;        }        return dummy.next;    }    public static ListNode reverseListByRecursive(ListNode head) {        if (head == null || head.next == null) {            return head;        }        ListNode newHead = reverseListByRecursive(head.next);        head.next.next = head;        head.next = null;        return newHead;    }}

运行结果

链表反转前:1->2->3->4->5->null迭代反转后:5->4->3->2->1->null递归反转后:1->2->3->4->5->null

转载于:https://www.cnblogs.com/hglibin/p/10585879.html

你可能感兴趣的文章
VIM工具
查看>>
javascript闭包
查看>>
@Column标记持久化详细说明
查看>>
创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备...
查看>>
mysql8.0.13下载与安装图文教程
查看>>
站立会议08(冲刺2)
查看>>
url查询参数解析
查看>>
http://coolshell.cn/articles/10910.html
查看>>
[转]jsbsim基础概念
查看>>
DIV和SPAN的区别
查看>>
第一次使用cnblogs
查看>>
C#语法糖之 session操作类 asp.net
查看>>
2015 Multi-University Training Contest 3
查看>>
使用Gitblit 在windows 上部署你的Git Server
查看>>
217. Contains Duplicate
查看>>
vue2.0 关于Vue实例的生命周期
查看>>
jenkins 更换主数据目录
查看>>
Silverlight中恼人的g.i.cs错误
查看>>
SQLite 数据库增删改查
查看>>
<s:iterator>的status
查看>>