手机
当前位置:查字典教程网 >编程开发 >Java >java实现数据结构单链表示例(java单链表)
java实现数据结构单链表示例(java单链表)
摘要:复制代码代码如下:/***单向链表**/publicclassNodeList{privatestaticclassNode{//节点类Ed...

复制代码 代码如下:

/**

* 单向链表

*

*/

public class NodeList<E> {

private static class Node<E> { // 节点类

E data; // 节点上的数据

Node<E> next; // 指向下一个节点

Node(E e) {

this.data = e;

this.next = null;

}

}

private Node<E> head; // 链表的头节点

private Node<E> last; // 链表的尾节点

private Node<E> other = null;

private int length = 0; // 节点数量

/**

* 无参构造方法

*/

public NodeList() {

// 默认节点为空

this.head = new Node<E>(null);

}

/**

* 初始化时创建一个节点

*

* @param data

* 数据

*/

public NodeList(E data) {

this.head = new Node<E>(data);

this.last = head;

length++;

}

/**

* 添加一个节点(尾插法)

*

* @param data

* 数据

*/

public void add(E data) {

if (isEmpty()) {

head = new Node<E>(data);

last = head;

length++;

} else {

Node<E> newNode = new Node<E>(data);

last.next = newNode;

last = newNode;

}

}

/**

* 获得索引处的数据(索引输入错误抛出越界异常)

* @param index 索引

* @return 索引处数据

*/

public E get(int index){

if(index<0 || index>length){

throw new IndexOutOfBoundsException("索引越界:"+index);

}

other = head;

for(int i=0;i<index;i++){

other = other.next;

}

return other.data;

}

/**

* 新值替换旧值

* @return 成功为true,未找到为false

*/

public boolean set(E oldValue,E newValue){

other = head;

while(other!=null){

if(other.data.equals(oldValue)){

other.data = newValue;

return true;

}

other = other.next;

}

return false;

}

/**

* 在指定元素后插入一个元素

*

* @param data

* 指定的元素

* @param insertData

* 需要插入的元素

* @return false为未找到元素,true为插入成功

*/

public boolean add(E data, E insertData) {

other = head;

while (other != null) {

if (other.data.equals(data)) {

Node<E> newNode = new Node<E>(insertData);

Node<E> temp = other.next;

newNode.next = temp;

other.next = newNode;

length++;

return true;

}

other = other.next;

}

return false;

}

/**

* 链表中是否包含此元素

* @return 包含为true,不包含为false

*/

public boolean contains(E data){

other = head;

while(other!=null){

if(other.data.equals(data)){

return true;

}

other = other.next;

}

return false;

}

/**

* 移除指定的元素

* @param data 需要移除的元素

* @return 不存在为false,成功为true

*/

public boolean remove(E data){

other = head;

Node<E> temp = head;//临时变量,用于保存前一个节点

while(other!=null){

if(other.data.equals(data)){

temp.next = other.next;

length--;

return true;

}

temp = other;

other = other.next;

}

return false;

}

/**

* 判断链表是否为空

*

* @return 空为true,非空为false

*/

public boolean isEmpty() {

return length == 0;

}

/**

* 清空链表

*/

public void clear() {

this.head = null;

this.length = 0;

}

/**

* 输出所有节点

*/

public void printLink() {

if(isEmpty()){

System.out.println("空链表");

}else{

other = head;

while (other != null) {

System.out.print(other.data);

other = other.next;

}

System.out.println();

}

}

}

【java实现数据结构单链表示例(java单链表)】相关文章:

java nio基础使用示例

java解析xml之dom解析xml示例分享

java实现mysql操作类分享 java连接mysql

java中实现汉字按照拼音排序(示例代码)

java进行error捕获和处理示例(java异常捕获)

java数组遍历 删除remove(示例代码)

java多线程编程之java线程简介

java实现单链表中是否有环的方法详解

java去除集合中重复元素示例分享 java去除重复

java读取文件内容的三种方法代码片断分享(java文件操作)

精品推荐
分类导航