java链表
来源:互联网 发布:网络文学评论 罗先海 编辑:程序博客网 时间:2024/05/15 11:17
1.节点说明:
package pku.ss.datastructure.LinkedList;
publicclass ListNode...{
ListNode(Object theElement) ...{
this(theElement,null);
}
ListNode(Object theElement, ListNode n) ...{
element= theElement;
next= n;
}
Object element;//节点中的元素
ListNode next;//指向下一个节点
}
publicclass 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
*/
publicclass 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;
}
/** *//**
* 是一个枚举器(iterator)类,它提供了用于读取元素的方法 LinkedListItr存储
* 对ListNode对象的一个引用,它代表枚举器 的位置
*
*@author Jacken
*/
publicclass 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;
publicclass 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;
}
publicclass 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 链表
- java链表
- Java 链表
- java链表
- java链表
- java链表
- java链表
- java 链表
- java链表
- Java链表
- Java 链表
- Java 链表
- java 链表
- java链表
- Java链表
- Java链表
- java链表
- JNI操作数组代码
- JAVA UUID
- hdu 1423 最长公共递增子序列
- 安装 Mono for Android (Visual Studio 2010)
- opencv中meanshift和camshift例子的应用教程示例
- java链表
- VC++与Matlab混合编程之引擎操作详解
- Linux用到的指令总结
- HttpUtils实例
- 运价:让我欢喜让我忧
- 连接池已满,超过最大连接数 解决方案
- 收藏的网页-Ogre
- IPC通信:Posix共享内存2
- 真机调试