//单链表反序
public class SingleLinkedListReverse {
public static void main(String[] args) {
Node head = new Node(0);
Node temp = null;
Node cur = null;
for (int i = 1; i <= 10; i++) {
temp = new Node(i);
if (i == 1) {
head.setNext(temp);
} else {
cur.setNext(temp);
}
cur = temp;
}//10.next = null;
Node h = head;
while (h != null) {
System.out.print(h.getData() + "\t");
h = h.getNext();
}
System.out.println();
//反转1
// h = Node.reverse1(head);
// while (h != null) {
// System.out.print(h.getData() + "\t");
// h = h.getNext();
// }
//反转2
h = Node.reverse1(head);
while (h != null) {
System.out.print(h.getData() + "\t");
h = h.getNext();
}
}
}
/*
* 单链表的每个节点都含有指向下一个节点属性
*/
class Node {
Object data;//数据对象
Node next; //下一节点
Node(Object d) {
this.data = d;
}
Node(Object d, Node n) {
this.data = d;
this.next = n;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
//方法1 head被重置
static Node reverse1(Node head) {
Node p = null; //反转后新的 头
Node q = head;
//轮换结果:012,123,234,.... 10 null null
while (head.next != null) {
p = head.next; // 第1个 换成第2个 这时p表示原始序列头中的next
head.next = p.next; // 第2个 换成第3个
p.next = q; //已经跑到第1位置的原第2个的下一个 就要变成 原第1个
q = p; //新的第1个 要变成 当前第一个
}
return p;
}
//方法2 head没重置
static Node reverse2(Node head) {
//将中间节点的指针指向前一个节点之后仍然可以继续向后遍历链表
Node p1 = head, p2 = head.next, p3; // 前 中 后
//轮换结果 :012, 123, 234, 345, 456.... 9 10 null
while (p2 != null) {
p3 = p2.next;
p2.next = p1; //指向后 变 指向前
p1 = p2; //2、3向前挪
p2 = p3;
}
head.next = null;//head没变,当输出到0时,再请求0.next 为1
return p1;
}
}
分享到:
相关推荐
单链表反序及求中位数的C++实现,初始化链表时用的是随机种子srand((int)time(0))。
基于编译原理的一些知识简单实现了一个json反序列化器。 1、词法分析:构造DFA; 2、语法分析:自顶向下递归构造AST; 3、生成JsonNode:前序遍历AST;
Java反序列化终极测试工具
Java反序列化漏洞利用工具
java反序列化终极工具,含有JBoss,websphere,weblogic等反序列化漏洞利用。
Java反序列化终极测试工具(里面有两款)
检测javaRMI反序列化漏洞
java反序列化漏洞利用工具包含jboss|weblogic,网上其实有很多,但是用别人的工具收30分是不是有点不厚道,所以我用自己的分下载下来,然后以最低分贡献给大家,上次没有审核通过,希望这次可以
Java反序列化漏洞检查工具V1.2_Weblogic XML反序列化漏洞检查工具CVE-2017-10271
java反序列化漏洞-验证jar
java反序列漏洞验证工具
源码层面分析java反序列化原理和jackson反序列化原理,并由此引入json反序列化漏洞挖掘思路。
Java反序列化漏洞探析及其修复方法研究.pdf
基于字节码搜索的Java反序列化漏洞调用链挖掘方法.pdf
java反序列化漏洞利用工具 jboss版本
Java反序列化漏洞利用集成工具
1. 综合实现网上公布的代码执行、反弹 2. jboss利用里添加一键getshell功能,利用的是jboss的热部署功能,直接部署一个war包,一键返回一个菜刀shell 3. 反弹shell部分更完美,不再加载远程war包,直接发包完成反弹...