博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 206 Reverse Linked List
阅读量:5117 次
发布时间:2019-06-13

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

Reverse a singly linked list.

 

思路:

正常情况下需要转置的链表一般都会做成双链表以减小转置的开销,但是题目规定是单链表。因此想到的方法是通过额外的引用指向节点,并且申请新引用存放转置时候的next数据域,来达到转置单链表的目的。迭代法比较繁琐,应该考虑到每一步的顺序,否则就会丢失引用。而Stack类的话相当直观,就是将整个链表放入栈内存取,即完成了倒置。

 

解法:

1.迭代法

循环中四步依次为存放当前节点的后节点,将当前结点的next指向前节点,将代表前节点的引用移动至当前节点,将代表当前节点的引用移动至下一个节点。顺序不可打乱。

1 /* 2     public class ListNode 3     { 4         int val; 5         ListNode next; 6  7         ListNode(int x) 8         { 9             val = x;10         }11     }12 */13 14 public class Solution15 {16     public ListNode reverseList(ListNode head)17     {18         if(head == null || head.next == null)19             return head;20         21         ListNode backPointer = head;22         ListNode pointer = head.next;23 24         backPointer.next = null;25 26         ListNode addition;27 28         while(pointer != null)29         {30             addition = pointer.next;31             pointer.next = backPointer;32             backPointer = pointer;33             pointer = addition;34         }35 36         return backPointer;37     }38 }

 

2.Stack类法

1 /* 2     public class ListNode 3     { 4         int val; 5         ListNode next; 6  7         ListNode(int x) 8         { 9             val = x;10         }11     }12 */13 14 import java.util.Stack;15 16 public class Solution17 {18     public ListNode reverseList(ListNode head)19     {20         if(head == null || head.next == null)21             return head;22 23         Stack
stack = new Stack<>();24 ListNode temp = head;25 while(temp != null)26 {27 stack.push(temp);28 temp = temp.next;29 }30 31 head = stack.pop();32 temp = head;33 34 while(!stack.isEmpty())35 {36 temp.next = stack.pop();37 temp = temp.next;38 }39 40 temp.next = null;41 return head;42 }43 }

 

转载于:https://www.cnblogs.com/wood-python/p/5734113.html

你可能感兴趣的文章
java IO流 之 字符流
查看>>
centos7安装nodejs
查看>>
笔记一 air android开发简介
查看>>
7月19号=》231页-240页
查看>>
eclipse svn知识
查看>>
IOS之KVC全解
查看>>
安卓开发:UI组件-布局管理器和文本显示
查看>>
WdatePicker日历添加事件,在任意月改变时处理日期事件
查看>>
iframe自动高度
查看>>
Swoole + zphp 改造为专门用来开发接口的框架
查看>>
Mysql 5.7.17安装后登录mysql的教程方法
查看>>
randint模块无法加载
查看>>
yarn-site.xml的配置内容
查看>>
MySQL Innodb事务自动提交(autocommit)
查看>>
how does vector work?
查看>>
简单有趣的二维码
查看>>
HOJ-1008
查看>>
教你如何用青花瓷(Charles)抓包
查看>>
Trimpath 模板语法
查看>>
11.1 flex - flex固定左宽固定,右宽自动
查看>>