1. class Node {
  2. private int data;
  3. private Node nextNode;
  4. public Node(int data) {
  5. this.data = data;
  6. }
  7. public int getData() {
  8. return data;
  9. }
  10. public void setData(int data) {
  11. this.data = data;
  12. }
  13. public Node getNextNode() {
  14. return nextNode;
  15. }
  16. public void setNextNode(Node nextNode) {
  17. this.nextNode = nextNode;
  18. }
  19. }
  20. public class ReverseSingleList {
  21. public static Node reverse(Node head) {
  22. if (null == head || null == head.getNextNode()) {
  23. return head;
  24. }
  25. Node reversedHead = reverse(head.getNextNode());
  26. head.getNextNode().setNextNode(head);
  27. head.setNextNode(null);
  28. return reversedHead;
  29. }
  30. public static Node reverse2(Node head) {
  31. if (null == head || null == head.getNextNode()) {
  32. return head;
  33. }
  34. Node node1 = head;
  35. Node node2 = head.getNextNode();
  36. head.setNextNode(null);
  37. while (null != node2) {
  38. node1 = node2;
  39. node2 = node2.getNextNode();
  40. node1.setNextNode(head);
  41. head = node1;
  42. }
  43. return head;
  44. }
  45. public static void main(String[] args) {
  46. Node head = new Node(0);
  47. Node cur = head;
  48. Node tmp = null;
  49. // 构造一个长度为10的链表,保存头节点对象head
  50. for (int i = 1; i < 10; i++) {
  51. tmp = new Node(i);
  52. cur.setNextNode(tmp);
  53. cur = tmp;
  54. }
  55. //打印反转前的链表
  56. Node h = head;
  57. while (null != h) {
  58. System.out.print(h.getData() + " ");
  59. h = h.getNextNode();
  60. }
  61. //调用反转方法
  62. //head = reverse(head);
  63. head = reverse2(head);
  64. System.out.println("\n**************************");
  65. //打印反转后的结果
  66. while (null != head) {
  67. System.out.print(head.getData() + " ");
  68. head = head.getNextNode();
  69. }
  70. }
  71. }
 
运行结果:

0 1 2 3 4 5 6 7 8 9

**************************

9 8 7 6 5 4 3 2 1 0

Java反转单链表的更多相关文章

  1. Java反转单链表(code)

    主要是面试中可能会经常碰上该类似操作,尤其是稍大点公司,面试官可能并不在乎你能不能搞定该题,但是这类型题目最是能体现程序员的思维状态 ---一个迷糊头脑的程序员 怎能立志改变这个世界 /** * @a ...

  2. Java实现单链表的各种操作

    Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素   4.实现链表的反转   5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...

  3. Reverse反转算法+斐波那契数列递归+Reverse反转单链表算法--C++实现

    Reverse反转算法 #include <iostream> using namespace std; //交换的函数 void replaced(int &a,int & ...

  4. java实现单链表的增删功能

    JAVA 实现单链表的增删功能 package linked; class LinkedTable{ } public class LinkedTableTest { public static vo ...

  5. 在O(n) 时间复杂度,O(1)空间复杂度内反转单链表

    在LeetCode中看到判断回文的程序:https://leetcode.com/problems/palindrome-linked-list/ 里面用单链表来存储数据,先反转前半部分的单链表,然后 ...

  6. 以K个为一组反转单链表,最后不足K个节点的部分也反转

    package StackMin.ReverseList_offer16; public class ReverseKgroup_extend_offer16 { /** * 分组反转单链表,最后不足 ...

  7. 【数据结构】单链表介绍及leetcode206题反转单链表python实现

    题目传送门:https://leetcode-cn.com/problems/reverse-linked-list/ 文章目录 单链表介绍 链表 概念 种类 优缺点 单链表(slist) leetc ...

  8. JAVA数据结构——单链表

    链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...

  9. 使用java实现单链表(转载自:https://www.cnblogs.com/zhongyimeng/p/9945332.html)

    使用java实现单链表----(java中的引用就是指针)转载自:https://www.cnblogs.com/zhongyimeng/p/9945332.html ? 1 2 3 4 5 6 7 ...

随机推荐

  1. [知识复习] C语言文件读写

    文件打开 fopen() 返回FILE* 对象,如果打开失败返回NULL,错误代码存入errno中 FILE *fopen( const char * filename, const char * m ...

  2. 图片上传功能(EasyUI前台框架+SSM框架)

    文件上传步骤: * 1.采用文件正确的接收方式(修改3处配置文件/接口类型等) * 2.判断是否为一个图片,0表示无异常,1代表异常(jpg|gif|png) * 3.判断是不是一个“正经”的图片,判 ...

  3. Aras Innovator DB备份与还原

    错误信息 确认到该问题是因为孤立帐号的问题,在解决孤立帐号之前,可以通过语句查看,另外,还原了DB后,系统不会自动创建原来的登陆帐号的,需要手动新增登陆帐号 #查看孤立帐号列表exec sp_chan ...

  4. POJ 1089 Intervals【合并n个区间/贪心】

    There is given the series of n closed intervals [ai; bi], where i=1,2,...,n. The sum of those interv ...

  5. LibreOJ #139 树链剖分 [树链剖分,线段树]

    题目传送门 树链剖分 题目描述 这是一道模板题. 给定一棵 n 个节点的树,初始时该树的根为 1 号节点,每个节点有一个给定的权值.下面依次进行 m 个操作,操作分为如下五种类型: 换根:将一个指定的 ...

  6. 洛谷P3197 HNOI2008 越狱

    题目传送门 实际上昨天大鸡哥已经讲过这题了,结果没记住,今天一道相似的题就挂了......吃一堑长一智啊. 思路大致是这样:如果直接算发生越狱的情况会比较复杂,所以可以用间接法,用安排的总方案-不会发 ...

  7. webpack HMR原理

    在启动 devServer 的时候,sockjs 在服务端和浏览器端建立了一个 webSocket 长连接,以便将 webpack 编译和打包的各个阶段状态告知浏览器,最关键的步骤还是 webpack ...

  8. luogu P1979 华容道

    solution 被假hash可了半天....sadQAQ code // luogu-judger-enable-o2 #include<queue> #include<cstdi ...

  9. 【后缀自动机】【拓扑排序】【动态规划】hihocoder1457 后缀自动机四·重复旋律7

    解题方法提示 小Hi:我们已经学习了后缀自动机,今天我们再来看这道有意思的题. 小Ho:好!这道题目让我们求的是若干的数字串所有不同子串的和. 小Hi:你能不能结合后缀自动机的性质来思考如何解决本题? ...

  10. 【LCA】BZOJ1832 & BZOJ1787(AHOI)-集会

    [题目大意] 一个图有n个点n-1条边(也就是说是一棵树),求其中三点共同到达某一点经过总共的最少边数以及共同到达的那一点. [思路] 借用一下黄学长给的结论:三个点两两取LCA,其中必有两个相同,则 ...