package edu.basejava.util;
import java.util.Iterator;
public class LinkedList<E> implements IList<E>, Iterable<E>
{
private Link<E> head;
private Link<E> tail;
protected Link<E> curr;
public LinkedList()
{
this.setup();
}
LinkedList(E[] elements)
{
this.setup();
for (E e : elements)
this.append(e);
}
public void append(E item)
{
this.tail.setNext(new Link<E>(item, null));
this.tail = this.tail.next();
}
public void clear()
{
this.head.setNext(null);
this.curr = this.head = this.tail = null;
}
public E currValue()
{
if (!this.isInList())
{
System.err.println("Curr is not in the list");
return null;
}
return this.curr.next().element();
}
@SuppressWarnings("unchecked")
public void insert(E item)
{
if (this.curr == null)
{
System.err.println("No current element");
return;
}
this.curr.setNext(new Link<E>(item, this.curr.next()));
if (this.tail == this.curr)
{
this.tail = this.curr.next();
}
}
public boolean isEmpty()
{
return this.head.next() == null;
}
public boolean isInList()
{
return (this.curr != null) && (this.curr.next() != null);
}
public int length()
{
int cnt = 0;
for (Link<E> tmp = this.head.next(); tmp != null; tmp = tmp.next())
cnt++;
return cnt;
}
public boolean hasNext()
{
return this.curr != null;
}
public void next()
{
if (this.curr != null)
this.curr = this.curr.next();
}
public void prev()
{
if ((this.curr == null) || (this.curr == this.head))
{
this.curr = null;
return;
}
Link<E> tmp = this.head;
while ((tmp != null) && (tmp.next() != this.curr))
tmp = tmp.next();
this.curr = tmp;
}
public void print()
{
if (this.isEmpty())
System.out.println("()");
else
{
System.out.print("( ");
for (this.setFirst(); this.isInList(); this.next())
System.out.print(this.currValue() + " ");
System.out.println(")");
}
}
public E remove()
{
if (!this.isInList())
return null;
E it = this.curr.next().element();
if (this.tail == this.curr.next())
this.tail = this.curr;
this.curr.setNext(this.curr.next().next());
return it;
}
public void remove(E element)
{
for (this.setFirst(); this.isInList(); this.next())
if (this.currValue().equals(element))
{
this.curr.setNext(this.curr.next().next());
if (this.curr == this.tail)
{
this.curr.setNext(null);
this.tail = this.curr;
}
}
}
public void setFirst()
{
this.curr = this.head;
}
public void setPos(int pos)
{
this.curr = this.head;
for (int i = 0; (this.curr != null) && (i < pos); i++)
this.curr = this.curr.next();
}
public void setValue(E val)
{
if (!this.isInList())
{
System.err.println("Curr is not in the list");
return;
}
this.curr.next().setElement(val);
}
public String toString()
{
if (this.isEmpty())
return ("()");
StringBuffer sb = new StringBuffer();
sb.append("( ");
for (this.setFirst(); this.isInList(); this.next())
sb.append(this.currValue() + " ");
sb.append(")");
return sb.toString();
}
private void setup()
{
this.tail = this.head = this.curr = new Link<E>(null);
}
@SuppressWarnings("hiding")
private class Link<E>
{
private E element;
private Link<E> next;
Link(E element, Link<E> next)
{
this.element = element;
this.next = next;
}
Link(Link<E> next)
{
this.next = next;
}
public E element()
{
return element;
}
public void setElement(E element)
{
this.element = element;
}
public Link<E> next()
{
return next;
}
public void setNext(Link<E> next)
{
this.next = next;
}
}
public Iterator<E> iterator()
{
return new Ite();
}
private class Ite implements Iterator<E>
{
Ite()
{
LinkedList.this.setFirst();
}
public void remove()
{
throw new UnsupportedOperationException();
}
public boolean hasNext()
{
LinkedList.this.next();
return LinkedList.this.hasNext();
}
public E next()
{
return curr.element();
}
}
}
发表评论
-
对字符文档输入输出封装类
2006-11-28 21:05 765package edu.basejava.util; impo ... -
自己写的JAVA数据结构5
2006-11-28 20:33 872package edu.basejava.util; publ ... -
自己写的JAVA数据结构4
2006-11-28 20:31 935package edu.basejava.util; publ ... -
自己写的JAVA数据结构3
2006-11-28 20:30 935package edu.basejava.util; publ ... -
自己写的JAVA数据结构1
2006-11-28 20:23 1049package edu.basejava.util; publ ... -
关于Java 初始化
2006-11-25 12:33 673关于Java 初始化,有多 ... -
深入 HashCode 方法
2006-11-25 12:26 1090Go deep into HashCode 为什么HashC ... -
Java异常学习心得
2006-11-23 13:29 1103本文 ...
相关推荐
Java数据结构和算法 Java数据结构和算法 Java数据结构和算法 Java数据结构和算法 Java数据结构和算法 Java数据结构和算法 Java数据结构和算法 Java数据结构和算法
在这个名为“数据结构JAVA实现”的压缩包中,我们可以看到作者提供了三种重要的数据结构——链表、有序二叉树和队列的Java代码实现。 首先,让我们详细探讨链表。链表是一种线性数据结构,与数组不同,它不连续存储...
JavaJava 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java 数据结构详细教程Java ...
Java数据结构是计算机科学中的重要课程,主要探讨如何有效地存储和组织数据,以便进行高效的操作。这门课程通常包括数组、链表、栈、队列、树、图、哈希表等多种数据结构,并深入讲解它们的特性、操作方法以及在实际...
"Java常见数据结构面试题(带答案)" 以下是对Java常见数据结构面试题的知识点总结: 栈和队列 * 栈和队列的共同特点是只允许在端点处插入和删除元素。 * 栈通常采用的两种存储结构是线性存储结构和链表存储结构...
java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题java数据结构经典例题...
《Java数据结构与算法中文版》是一本深入探讨编程核心领域的书籍,主要针对Java程序员,旨在提升他们在数据处理和问题解决能力上的技能。这本书详细介绍了数据结构和算法的基础理论及其在Java语言中的实现,是Java...
Java数据结构和算法.pdf
"Java数据结构实例"这个主题,旨在通过具体的代码实例帮助初学者掌握数据结构的基本概念和使用方式,以此来提升编程思维和问题解决能力。在这个压缩包文件中,我们可以预期找到一些用Java实现的数据结构的源代码。 ...
Java作为广泛应用的编程语言,其在实现数据结构和算法时有着丰富的库支持和优秀的可读性。下面将对标题和描述中提到的一些关键知识点进行详细解释。 1. **数据结构**: - **稀疏数组**:当大量数据中大部分为零或...
根据提供的信息,“Java数据结构和算法中文第二版”这本书主要关注的是数据结构与算法的相关内容。下面将基于这些信息,详细介绍数据结构与算法的核心概念、重要性和应用领域,以及在Java编程环境中如何实现这些概念...
java 数据结构总结的思维导图笔记,个人做的非常全,需要的自行下载
《邓俊辉版Java数据结构源码》是学习数据结构与算法的重要参考资料,它与邓俊辉教授编写的《Java数据结构》教材相配套,旨在帮助读者深入理解数据结构的概念和实现方法。邓俊辉教授的讲解风格清晰易懂,他的源码同样...
《数据结构(Java版本)》这本书正是为此目的而编写,旨在将理论与实际编程相结合,通过Java语言来实现各种经典的数据结构。 首先,书中的基础部分会介绍数据结构的基本概念,如数组、链表、栈和队列。数组是最基本...
Java数据结构和算法第七讲.avi Java数据结构和算法第三十一讲.avi Java数据结构和算法第三十七讲.avi Java数据结构和算法第三十三讲.avi Java数据结构和算法第三十九讲.avi Java数据结构和算法第三十二讲.avi Java...
Java软件结构与数据结构(第4版)由著名作者JohnLewis(刘易斯)编写,本书始终以良好软件工程实践为准则,以Java为语言,介绍数据结构与算法的相关知识和具体实现,强调完美软件设计技巧的重要性,并通过大量的示例,...
以上就是Java数据结构测试题中涉及的主要知识点,它们涵盖了数据结构、软件工程、面向对象编程和多线程等多个方面,这些都是Java开发者必备的基础知识。理解并掌握这些内容对于编写高效、安全的Java代码至关重要。
这份“JAVA数据结构实验报告”很可能涵盖了数据结构的基本概念、常见类型以及它们在Java中的实现。下面我们将深入探讨相关知识点。 一、数据结构基本概念 数据结构是指一组数据的存储结构,它可以是线性的,如数组...
Java数据结构 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构
《Java数据结构(老外那版,翻译的)》是一本专门为Java程序员设计的数据结构教程,它以清晰易懂的方式介绍了各种重要的数据结构概念。这本书是初学者的优秀选择,特别是对于那些偏好Java语言,不熟悉C++的人来说,...