java怎么把一个单链表倒序输出
就是12345变成54321不能重建一个链表或者堆栈什么的。。。求代码
单向链表的话,不借助其他的链表或其他的存储区只能是单向的输出,因为只有知道上一个节点才能找到先一个节点。如果双向链表直接可以逆序输出。毕业论文
package link; /** * 节点对象不用我写注释了吧 * @author * 创建时间:2011-4-1 上午10:15:18 * 类说明: */public class Node { private int value = -1; private Node next = null; public Node(int value){ this.value = value; } 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; } @Override public String toString() { return "Node [value=" + value + "]"; } }
package link; /** * 链表类,注释我都加了 * @author * 创建时间:2011-4-1 上午10:16:46 * 类说明: */public class NodeList { private Node head = null; public Node getHead(){ return this.head; } /** * 对外公布的添加节点的方法 * @param node */ public void addNode(Node node){ if(this.head == null){ /** * 如果头节点是空,就把要加的节点给头节点 */ this.head = node; }else{ /** * 否则把这个节点加到头节点后面的节点上 */ this.addSubNode(this.head, node); } } /** * 反向输出节点元素 */ public void reversePrint(){ int size = this.getSize(0, this.head); for(int index = size; index > 0; index--){ System.out.println(this.getNode(index)); } } /** * 给一个节点加子节点的方法 * @param destNode * @param node */ private void addSubNode(Node destNode, Node node){ if(destNode.getNext() == null){ /** * 如果这个节点没有子节点则把新节点设置为这个节点的子节点 */ destNode.setNext(node); }else{ /** * 否则把新节点加到这个节点的子节点的后面 */ this.addSubNode(destNode.getNext(), node); } 毕业论文 } /** * 得到下标对应的节点对象 * @param index * @return */ private Node getNode(int index){ int start = 1; Node currentNode = this.head; while(start < index){ currentNode = currentNode.getNext(); start++; } return currentNode; } /** * 计算链表里节点个数的方法 * @param size * @param currentNode * @return */ private int getSize(int size, Node currentNode){ if(currentNode.getNext() == null){ return ++size; }else{ return getSize(++size, currentNode.getNext()); } } }