近日复习数据结构,以前都是用c写的程序,现在用java来将其重新实现,希望大家批评指正:
1,节点说明:
package pku.ss.datastructure.LinkedList;
public class ListNode {
ListNode(Object theElement) {
this(theElement, null);
}
ListNode(Object theElement, ListNode n) {
element = theElement;
next = n;
}
Object element; //节点中的元素
ListNode next; //指向下一个节点
}
2,枚举器类
package pku.ss.datastructure.LinkedList;
/**
* 是一个枚举器(iterator)类,它提供了用于读取元素的方法 LinkedListItr存储
* 对ListNode对象的一个引用,它代表枚举器 的位置
*
* @author Jacken
*/
public class LinkedListItr {
LinkedListItr(ListNode theNode) {
current = theNode;
}
/**
* 判断当前节点是否是最后一个节点
* @return true or false
*/
public boolean isPastEnd() {
return current == null;
}
/**
* 返回当前节点的元素值
* @return 当前节点的元素值
*/
public Object retrieve() {
return isPastEnd() ? null : current.element;
}
/**
* 将当前节点往后推后一个节点
*/
public void advance() {
if (!isPastEnd())
current = current.next;
}
ListNode current;
}
3,链表类
package pku.ss.datastructure.LinkedList;
public class LinkedList {
public LinkedList() {
header = new ListNode(null);
}
/**
* 判断链表是否为空
* @return true or false
*/
public boolean isEmpty() {
return header.next == null;
}
/**
* 将链表置空
*/
public void makeEmpty() {
header.next = null;
}
/**
* 返回头节点的枚举器
* @return 头节点枚举器
*/
public LinkedListItr zeroth() {
return new LinkedListItr(header);
}
/**
* 返回第一个节点的枚举器
* @return 第一个节点的枚举器
*/
public LinkedListItr first() {
return new LinkedListItr(header.next);
}
/**
* 查找指定元素
* @param x
* @return 所查找元素的枚举器
*/
public LinkedListItr find(Object x) {
ListNode itr = header.next;
while (itr.next != null && !itr.element.equals(x))
itr = itr.next;
return new LinkedListItr(itr);
}
/**
* 删除指定元素
* @param x
*/
public void remove(Object x) {
LinkedListItr p = findPrevious(x);
if (p.current.next != null)
p.current.next = p.current.next.next;
}
/**
* 查找指定元素的头一个节点
* @param x
* @return 指定元素的头一个节点的枚举器
*/
public LinkedListItr findPrevious(Object x) {
ListNode itr = header;
while (itr.next != null && !itr.next.element.equals(x))
itr = itr.next;
return new LinkedListItr(itr);
}
/**
* 在P几点后面插入一个节点,节点的元素值为x
* @param x
* @param p
*/
public void insert(Object x, LinkedListItr p) {
if (p != null && p.current != null)
p.current.next = new ListNode(x, p.current.next);
}
/**
* 打印指定链表
* @param theList
*/
public static void printList(LinkedList theList) {
if (theList.isEmpty()) {
System.out.println("Empty List");
} else {
LinkedListItr itr = theList.first();
for (; !itr.isPastEnd(); itr.advance())
System.out.println(itr.retrieve() + " ");
}
}
private ListNode header;
}
分享到:
相关推荐
Java 数据结构 链表 Java链表 数据结构链表
list v2 用Object对象,接口inteface,迭代器Iterator实现linklist,Arraylist
Java数据结构 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构
java 数据结构 链表 自己写的 java 数据结构 链表 自己写的 java 数据结构 链表 自己写的
java 数据结构 遍历链表程序 有研究或探讨的请加群:37424970 或联系本人MSN或邮箱:zhuseahui@yahoo.com.cn
主要介绍了Java数据结构之链表(动力节点之Java学院整理)的相关资料,需要的朋友可以参考下
主要介绍了Java数据结构之链表、栈、队列、树的实现方法,结合实例形式分析了Java数据结构中链表、栈、队列、树的功能、定义及使用方法,需要的朋友可以参考下
这是个java编的双向链表的演示,数据结构是编程中很重要,但很难懂的一部分
数据结构-链表 JAVA语言实现,包含单向链表、双向链表、循环链表的遍历、删除和插入 详细介绍:http://blog.csdn.net/z740852294/article/details/77369439
JAVA实现链表 有序二叉树 队列的代码例子
Java语言编写的数据结构-链表实现。包括顺序表和单链表、双链表
基于java数据结构链表写的猴子选大王,其实就是一个约瑟夫环问题,采用java数据结构链表写的。有点小问题。当输入一只猴子,报数为1时删除会出错。没有实现动态显示猴子的添加和删除。
数据结构的定义 数据结构是计算机存储、组织数据的方式,用于高效地访问和修改数据。...Java提供了丰富的数据结构库,包括数组、链表、栈、队列等,这些数据结构为程序员提供了处理各种问题的工具和方法。
用java实现了数据结构中的链表,作为新手学习数据结构和java的资料。
基于Java实现数据结构链表相关程序
基于java数据结构链表实验报告.pdf
基于Java实现数据结构链表相关程序.pdf
数据结构 链表
数据结构,用Java实现链表 private class Node { private String data; private Node next; public Node(String dataPortioin) { data = dataPortioin; next = null; } public Node(String ...
主要介绍了Java数据结构之简单链表的定义与实现方法,简单描述了链接的概念、原理,并结合实例形式分析了java定义与使用链表的相关步骤与操作技巧,需要的朋友可以参考下