📄 linkedlisttest.java
字号:
/** (c) 2005 Aptech Limited.
* 版权所有
*/
/**
* 创建一个类,存储数据和地址.
* @version 1.0, 2005 年 5 月 20 日
* @author zl
*/
class Node {
/**声明 Object 类的对象. */
Object dataObj;
/** 声明 Node 类的对象. */
Node nextNode;
/**
* 使用数据初始化对象.
* @param data 用于初始化数据
*/
public Node(final Object data) {
dataObj = data;
}
}
/**
* 实现链表.
* 数据结构的概念并重写方法的类
* @version 1.0, 2005 年 5 月 20 日
* @author zl
*/
class LinkedList {
/** 声明 Node 类的对象. */
private Node firstNode;
/** 声明 Node 类的对象. */
private Node lastNode;
/**
* 构造方法.
*/
LinkedList() {
}
/**
* 创建一个 Node 对象.
* @param dataObj 用于初始化数据
* @return Node 对象
*/
private Node createNode(final Object dataObj) {
Node nextNode = new Node(dataObj);
return nextNode;
}
/**
* 重写 LinkedList 类的 isEmpty() 方法.
* 检查节点是否包含任何元素
* @return boolean 值
*/
boolean isEmpty() {
return firstNode == null;
}
/**
* 重写 LinkedList 类的 addFirst() 方法.
* @param data 添加到链表的前面
*/
void addtoFront(Object data) {
Node nNode = createNode(data);
/* 将节点附加到链表的前面*/
if (isEmpty()) {
firstNode = nNode;
lastNode = nNode;
} else {
nNode.nextNode = firstNode;
firstNode = nNode;
}
}
/**
* 重写 LinkedList 类的 addLast() 方法.
* @param data 添加到链表的末尾
*/
void addtoBack(final Object data) {
Node nNode = createNode(data);
/* 将节点附加到链表的末尾*/
if (isEmpty()) {
firstNode = nNode;
lastNode = nNode;
} else {
lastNode.nextNode = nNode;
lastNode = nNode;
}
}
/**
* 重写 LinkedList 类的 removeFirst() 方法.
* @return Object 链表中的对象
* @throws Exception
* @throws Exception 对象
*/
Object fetchFromFront() throws Exception {
if (isEmpty()) {
throw new Exception("Empty list in Fetch From Front");
} else {
Node tempNode = firstNode; //declare a localnode
if (firstNode == lastNode) {
firstNode = null;
lastNode = null;
} else {
firstNode = firstNode.nextNode;
}
return tempNode.dataObj;
}
}
/**
* 重写 LinkedList 类的 removeLast 方法.
* @return Object 链表中的对象
* @throws Exception
* @throws Exception 对象
*/
Object fetchFromBack() throws Exception {
if (this.isEmpty()) {
throw new Exception("Empty list in Fetch From Back");
} else {
Node tempNode = lastNode;
if (firstNode == lastNode) {
firstNode = null;
lastNode = null;
} else {
Node currentNode = firstNode;
while (currentNode.nextNode != lastNode) {
currentNode = currentNode.nextNode;
}
lastNode = currentNode;
currentNode.nextNode = null;
}
return tempNode.dataObj;
}
}
/**
* 显示 LinkedList 类的内容.
*/
void display() {
System.out.println("\n**********************************");
System.out.println("显示链表的值");
System.out.println("**********************************");
if (isEmpty()) {
System.out.println("空");
return;
}
Node current = firstNode;
while (current != null) {
System.out.println("值: " + current.dataObj);
current = current.nextNode;
}
}
}
/**
* 实际测试数据结构和
* 方法的类
* @version 1.0, 2005 年 5 月 20 日
* @author zl
*/
class MethodTest {
/** 声明变量.*/
LinkedList listObj;
/**
* 构造方法初始化变量.
*/
MethodTest() {
listObj = new LinkedList();
}
/**
* 要调用的方法.
*/
void test() {
System.out.println("测试未排序的链表");
System.out.println();
System.out.println("添加值");
listObj.addtoFront(new String("二"));
listObj.addtoBack(new String("三"));
listObj.addtoFront(new String("一"));
listObj.addtoBack(new String("四"));
listObj.display();
System.out.println("******************");
System.out.println("从链表中删除");
System.out.println("******************");
try {
System.out.println("已删除 " + listObj.fetchFromFront());
System.out.println("已删除 " + listObj.fetchFromBack());
} catch (Exception e) {
System.out.println("异常:" + e);
}
}
}
/**
* 包含 main 方法的类.
* @version 1.0, 2005 年 5 月 20 日
* @author zl
*/
class LinkedListTest {
/**
* 构造方法.
*/
protected LinkedListTest() {
}
/**
* 这是 main 方法,任何应用程序的入口点.
* @param args 传递至 main 方法
*/
public static void main( String[] args) {
MethodTest obj = new MethodTest();
obj.test();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -