=============Node.java==================
import java.util.Random;
/**
* 单个节点
* @version 1.0
* @author 点子二木
* @date 2008-7-22
* @right Copyright (C), 2008
*/
public class Node {
public int value = 0;
public Node next = null;
public Node(int value) {
this.value = value;
}
public Node(int value, Object obj) {
this.value = value;
Random r = new Random();
int nextValue = r.nextInt(100);
this.next = new Node(nextValue);
}
}
================NodeLink.java========================
import java.util.Random;
/**
* 链表
* @version 1.0
* @author 点子二木
* @date 2008-7-22
* @right Copyright (C), 2008
*/
public class NodeLink {
private static final int NUM_RANDOM = 10;
Node nodes[] = null;
// ////////////////构造方法//////////////////////
public NodeLink(Node[] nodes) {
this.nodes = nodes;
}
// /////////////主方法/////////////////////
/**
* 将链表倒序
*
* @return
*/
private Node[] Reverse() {
Node nodesRev[] = null;
nodesRev = new Node[this.nodes.length];
for (int i = 0; i < this.nodes.length; i++) {
nodesRev[this.nodes.length - i - 1] = this.nodes[i];
if (i >= 1) {
nodesRev[this.nodes.length - i - 1].next = this.nodes[i - 1];
} else if (i == 0) {
nodesRev[nodes.length-1].next = this.nodes[nodes.length-1].next;
}
}
return nodesRev;
}
/**
* 打印链表
*
* @param nodes
*/
private static void printLink(Node[] nodes) {
boolean isNull = false;
if (!isNull) {
for (int i = 0; i < nodes.length; i++) {
if (nodes[i].next != null) {
System.out.println(" nodes[" + Integer.toString(i)
+ "]:value=" + nodes[i].value + "; next="
+ nodes[i].next.value);
}
}
} else {
System.out.println("无子节点");
}
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("============Reverse NodeLink test================");
// 利用随机函数定义一定数量的链表的值,由此创建的Point类实例存入一个数组中
Node nodeArray[] = new Node[NUM_RANDOM];
Random r = new Random();
int value = 0;
value = r.nextInt(100);
nodeArray[0] = new Node(value, null);
for (int i = 1; i < nodeArray.length; i++) {
value = nodeArray[i - 1].next.value;
nodeArray[i] = new Node(value, null);
}
System.out.println("Original List:");
NodeLink.printLink(nodeArray);
Node nodesRev[] = null;
NodeLink nodeLink = new NodeLink(nodeArray);
// 编程实现根据一个已存在的链表创建一个倒序链表。
System.out.println("Reverse it:");
nodesRev = nodeLink.Reverse();
NodeLink.printLink(nodesRev);
}
}
输出结果:
============Reverse NodeLink test================
Original List:
nodes[0]:value=68; next=83
nodes[1]:value=83; next=70
nodes[2]:value=70; next=8
nodes[3]:value=8; next=41
nodes[4]:value=41; next=49
nodes[5]:value=49; next=92
nodes[6]:value=92; next=93
nodes[7]:value=93; next=11
nodes[8]:value=11; next=23
nodes[9]:value=23; next=3
Reverse it:
nodes[0]:value=23; next=11
nodes[1]:value=11; next=93
nodes[2]:value=93; next=92
nodes[3]:value=92; next=49
nodes[4]:value=49; next=41
nodes[5]:value=41; next=8
nodes[6]:value=8; next=70
nodes[7]:value=70; next=83
nodes[8]:value=83; next=68
nodes[9]:value=68; next=3
分享到:
相关推荐
很好的,这是一个关于算法的问题,通常的都是用c实现的,但面向对象的java也可以解决这个问提。
实现单向链表倒序,intel面试题 将链表A->B->C 转换成 C->B->A
主要介绍了C++链表倒序实现方法,是一个很经典的C++链表操作实例,需要的朋友可以参考下
****设计一算法,逆置带头结点的动态链表L。要求利用原表的结点空间,并要求用尽可能少的时间完成。 * ************************************************************************************************/
java 链表心得,对于感到困难的朋友会有很大帮助,与其他语言互通
用java链表实现了两个多项式的相加、相乘,最后得到最终结果以链表形式输出
JAVA链表实现类(数据结构学习).chm
java链表,非常易于理解,能帮助你快速掌握链表编程
本资料实例讲解java单项链表的实现以及拓展进行排序,每行代码都附有注释
链表实验JAVA 源代码 压缩包分三个文件ListNode.java,StringLinkedList.java,StringLinkedList.java
java中链表的创建 使用 实例 。初学者用于理解链表的使用。带有60%带有注释。 java链表 链表的讲解 java源代码加注释
用java实现了数据结构中的链表,作为新手学习数据结构和java的资料。
约瑟夫问题,通过类实现的链表,并加以改进,做成双向链表
Java 数据结构 链表 Java链表 数据结构链表
java考试复习用,顺手写了一个。zip
* 基于链表实现树结构 */ package dsa; public class TreeLinkedList implements Tree { private Object element;//树根节点 private TreeLinkedList parent, firstChild, nextSibling;//父亲、长子及最大的...
对于链表有兴趣的朋友 ,作用很大。里面有几种不同的方法,c++。
这是一个单向链表,它具有插入与删除节点的功能。Entry类实现了链表的各节点。
丛文件读入30个无序整数,建立一个单链表,排序输出、再倒序输出。 (2)丛文件读入30个无序整数,建立一个双向循环链表并输出,调整链表顺序为 (a1,a3.a5…,a2,a4,a6…)并输出。