代码如下
容器类
package datastructure;
import java.util.Iterator;
//链表
public class LinkList<T> implements Iterable{
Node<T> first,last;
int length;
Iterator<T> itr=null;
public LinkList(){
first=last=null;
length=0;
}
public Iterator<T> iterator() {
return new itr();
}
//存取第i个节点
Node<T> getNode(int i){
if(i<0||i>length-1){
return null;
}
if(i==0){
return first;
}
Node<T> p=first;
int j=0;
while(p!=null&&j<i){
p=p.next;
j++;
}
return p;
}
//取得i号节点的值
public T get(int i){
Node<T> p=getNode(i);
if(p==null){
return null;
}
else
return p.data;
}
//修改第i号节点的值
public boolean set(int i,T x){
Node<T> p=getNode(i);
if(p==null){
return false;
}
else{
p.data=x;
return true;
}
}
//在i位插入元素
public void add(int i,T x){
Node<T> p=null,s=null;
int j=i-1;
s=new Node<T>(x,null);
if(first==null||length==0){
first=s;
last=s;
}
if(j<0){
s.next=first;
first=s;
}
if(j>=length-1){
s.next=last;
last=s;
}else{
p=getNode(j);
s.next=p.next;
p.next=s;
}
length++;
}
class itr implements Iterator<T>{
private int index=0;
private Node<T> current=first;
public boolean hasNext() {
return (index!=length&¤t!=null);
}
public T next() {
T temp=current.data;
current=current.next;
index++;
return temp;
}
}
}
//节点
class Node<T> implements Comparable<Node<T>>{
public T data;
public Node<T> next;
public Node(T key){
data=key;
next=null;
}
public Node(T key,Node<T> next){
data=key;
this.next=next;
}
public boolean equals(Object e){
Node<T> node=(Node<T>)e;
return data.equals(node.data);
}
public int compareTo(Node<T> e) {
Comparable<T> x;
if(data instanceof Comparable){
x=(Comparable<T>)data;
return (int)x.compareTo(e.data);
}else throw new ClassCastException("类型无法比较!");
}
public String toString(){
return data.toString();
}
}
测试类
package datastructure;
import java.util.*;
public class test {
public static void main(String[] args) {
LinkList<Integer> list=new LinkList<Integer>();
list.add(1,1);
list.add(2,2);
list.add(3,3);
Iterator<Integer> i=list.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
}