java链表倒序

=============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

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值