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

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

public class LinklistReverse {    //定义类节点类 封装节点信息    static class Node {        private int value;        private Node next;        public Node(int value) {            this.value = value;            this.next = null;        }        public int getValue() {            return value;        }        public void setValue(int value) {            this.value = value;        }        public Node getNext() {            return next;        }        public void setNext(Node next) {            this.next = next;        }    }    public static Node reverse3(Node head) {        //当前节点  1        Node cur = head;        //当前节点的下一个节点  2        Node post = head.next;        //将当前节点的指向设置为空  1->null        head.next = null;        while (post != null) {            //将下一个节点的值 给一个临时变量 2=tmp            Node tmp = post;            //将下一个的下一个值给 下个值  3->2            post = post.next;            //临时节点的再赋值 将1 赋给他的next节点 1=tmp.next            tmp.next = cur;            //tmp现在是 2->1            cur = tmp;        }        return cur;    }    //1->2->3->4->5     1<-2<-3<-4<-5    public static Node reverse(Node node) {//        //如果进来的节点是第一个或者最后一个//        Node current=node;//        Node next=node.getNext();//       while (next!=null){//           Node tmp=next;//           next=next.getNext();//           tmp//       }//    }        return null;    }//    public void reverse4(Node node) {//        ///记录current的节点是head大的下一个节点。//        Entry
current = head.next;//// //切断head.next指向current,(当前的head变为链表的尾,所以next为空)// head.next = null;// while(current != null) {// //记录currentNext的节点是currentNext大的下一个节点。// Entry
currentNext = current.next;// //current.next反方向指向以前的节点// current.next = head;// //移动head和current指针,到后面head重新成为头节点// head = current;// current = currentNext;// }// } public static void main(String[] args) { Node head = new Node(0); Node node1 = new Node(1); Node node2 = new Node(2); Node node3 = new Node(3); head.setNext(node1); node1.setNext(node2); node2.setNext(node3); Node h = head; while (h != null) { System.out.println(h.getValue() + " "); h = h.getNext(); } head= reverse3(head); System.out.println("==========="); while (head != null) { System.out.println(head.getValue() + " "); head = head.getNext(); } }}

 

转载于:https://www.cnblogs.com/hejunhong/p/10604126.html

你可能感兴趣的文章
蓝桥网试题 java 入门训练 A+B问题
查看>>
字典操作学习小结
查看>>
逻辑运算符
查看>>
jstl和jsp脚本变量相互访问
查看>>
重新打理博客
查看>>
Apache+modjk布置tomcat集群
查看>>
Javascript笔记部分
查看>>
【转】微软教学:三种方法屏蔽Win7/Win8.1升级Win10推送
查看>>
1 C# 将对象序列化
查看>>
Qt事件处理(一)
查看>>
HDU 1563 【Find your present!】
查看>>
关于html的meta标签总结
查看>>
1、Spark 通过api,hfile两种形式获取hbase数据,简单样例
查看>>
Openjudge NOI题库 数论185 反正切函数的应用
查看>>
php常用判断的函数
查看>>
第八章 虚拟机字节码执行引擎(待续)
查看>>
HDU 5024
查看>>
MVVMLight消息通知实现机制详解(一)
查看>>
C#验证类 可验证:邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP (转)
查看>>
go——标准命令
查看>>