`
dianziermu
  • 浏览: 140589 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java链表倒序

    博客分类:
  • J2SE
阅读更多

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

 

 

 

分享到:
评论

相关推荐

    java 实现倒序链表

    ### Java实现倒序链表 在本篇文章中,我们将探讨如何使用Java来实现一个倒序链表的功能。链表作为一种常见的数据结构,在计算机科学中有着广泛的应用,而倒序链表则是链表操作中的一项基本技能,对于理解链表的工作...

    java面试编程题(数组和链表相关) 数组和链表.pdf

    Java面试编程题(数组和链表相关) 本资源主要讲解了Java面试编程题中的数组和链表相关知识点,涵盖了Java编程语言中数组和链表的基本概念、算法和数据结构等方面的知识。 一、数组相关知识点 1. 、二维数组的...

    面试题:用 Java 逆序打印链表

    Java 逆序打印链表 Java 逆序打印链表是一种常见的面试题,主要考察候选人的编程能力和数据结构知识。本文将详细介绍如何使用 Java 逆序打印链表,并提供了两种不同的实现方法。 链表的基本概念 在了解链表逆序...

    H3C华三通信面试题_嵌入式-常用知识&面试题库_大厂面试真题.doc

    4. 将一个链表倒序。 这是一个典型的链表操作问题,需要使用递归或迭代算法来解决。我们可以使用递归算法来倒序链表,或者使用迭代算法来实现链表的倒序。 5. 编程实现一个双向链表的删除过程。 这是一个典型的...

    java二叉树算法源码-DataStructure:常用数据结构及其算法的Java实现,包括但不仅限于链表、栈,队列,树,堆,图等经典数据结构

    链表的倒序输出 链表的中间节点 链表是否有环 链表节点的删除(不知道头结点的情况下) 链表是否相交 链表的交点 栈(顺序栈/链式栈)的数据结构及其相关算法:栈结构包含两个要素,即栈顶指针top和栈大小size,具体操作...

    java题目例题-----

    5. 链表的操作:文档中介绍了如何根据现有的链表创建一个倒序链表。这部分内容涉及到链表节点的遍历和反转操作,是数据结构中链表部分的基础知识点。 6. 输入输出处理:示例程序中使用了BufferedReader和...

    prefixspan_java.rar_prefixspan_prefixspan java

    它采用倒序链表结构存储序列,以便快速查找和更新。算法主要包含两个阶段:初始化和递归挖掘。 1. 初始化:首先,算法对所有序列进行预处理,构建一个项集的前缀树。每个节点代表一个项,边表示项的顺序关系。 2. ...

    java高级工程师面试总结

    ### Java高级工程师面试总结 #### Java基础 - **Hashtable和HashMap的区别**: - `Hashtable`是线程安全的,而`HashMap`不是。这意味着在多线程环境中使用`Hashtable`时无需额外的同步措施,但这也使得其性能较低...

    Java 微软面试题

    这些题目涵盖了广泛的Java和计算机科学基础,主要涉及算法设计、数据结构、字符串处理、内存管理以及逻辑思维。以下是对部分题目的详细解析: 1. **两两之差绝对值最小的值**:这是一个关于数组处理的问题,可以...

    LinkedLists:链表操作

    4. **倒序遍历**:通过反向遍历链表,可以轻松实现元素的逆序输出。 5. **合并链表**:使用`addAll()`方法可以将一个链表的所有元素添加到另一个链表中,实现链表的合并。 ### 性能分析 - **时间复杂度**:插入和...

    ---:链表创建与遍历的算法

    链表不同于数组,其元素不连续存储在内存中,而是通过指针(在C/C++中)或引用(在Java或Python中)相互连接。本篇文章将深入探讨链表的创建与遍历算法。 ### 一、链表的基本概念 1. **节点(Node)**: 链表中的每...

    leetcode_resolve.rar_Java编程_Java_

    在Java中,可以通过倒序遍历,找到第一个小于其后元素的数字,然后在其后找到最小的比它大的数字,交换这两个数字,最后对整个序列进行逆序。 6. **36. 只出现一次的数字**:这道题要求找出数组中唯一出现一次的...

    奇虎360 2016校园招聘面试题 一二面.pdf

    - **链表倒序输出**:不能改变链表结构,可以迭代或递归实现,每次取出头部元素并连接到结果链表尾部。 5. **编程工具** - **vim替换语句**:例如,使用`:s/abc/def/g`命令全局替换字符串。 6. **PHP字符串处理...

    毕向东Java笔记(五)集合框架1

    - `LinkedList`基于链表实现,增删速度快,但查询速度慢,同样是非线程安全。 - `Set`接口包含不包含重复元素的集合,`HashSet`和`TreeSet`是其常见实现: - `HashSet`使用哈希表存储元素,通过`hashCode()`和`...

    奇虎360 2014校园招聘面试 一二面.doc

    - **链表倒序输出**:利用头尾交换思想,不改变链表结构,且不使用额外空间。 5. **编程工具**: - **vim替换语句**:vim编辑器提供了强大的文本替换功能,如`:s/abc:def/g`可将所有abc替换为def。 - **调试原理...

    Java6 Collection Framework 新特性概览.pdf

    - **定义**:扩展了SortedSet接口,提供了导航方法来定位和检索元素,支持正序和倒序访问。 - **特点**: - 支持对给定目标查找最匹配的结果。 - 可以在升序或降序的方式下被访问和移动。 - 被设计用于替代...

    练习--控制台购物管理系统

    5. **数据结构与算法**:为了高效地管理数据,系统可能使用了数组、链表或集合框架(如ArrayList、HashMap等)来存储用户、商品和购物车信息。例如,使用HashMap可以快速根据用户名查找用户信息,使用ArrayList则...

    LinkedList的用法

    在Java集合框架中,`LinkedList`类是一种基于链表实现的线性数据结构,继承自`AbstractSequentialList`抽象类,并实现了`List`接口与`Deque`接口。由于其内部是通过双向链表来存储元素,因此在元素的增删操作上具有...

    模拟试卷9-算法附加题1

    此题要求检查单链表是否中心对称,即倒序后链表的前半部分与后半部分相同。以下是一种基于栈的解决方案: 1. 将链表的前半部分元素入栈。 2. 遍历链表的后半部分,每次取出栈顶元素与当前链表节点比较,直到栈为空...

Global site tag (gtag.js) - Google Analytics