数据结构(LinkedList的java实现)

来源:互联网 发布:云计算iaas 架构图 编辑:程序博客网 时间:2024/05/12 13:33

 package day10;
import java.util.*;
public class MyLinkedList implements List
{
static class Node
{
public Object data;
public Node next;
public Node(Object data)
{
this.data=data;
}
}
private Node head;
public  MyLinkedList()
{
head=new Node(0);
}
public void add(int index, Object element)
{
if(index<(Integer)head.data)
{
Node current;
current=head;
for(int i=0;i<index;i++)
{
current=current.next;
}
Node p=new Node(element);
p.next=current.next;
current.next=p;   
head.data=(Integer)head.data+1;
}
else
{
System.out.println("ERROR!");
}

}
@Override
public boolean add(Object e)
{
Node current=head;
while(current.next!=null)
{
current=current.next;
}
Node p=new Node(e);
current.next=p;   
head.data=(Integer)head.data+1;
return true;
}
@Override
public boolean addAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean addAll(int index, Collection c) {
// TODO Auto-generated method stub
return false;
}
@Override
public void clear()
{
head.next=null;
}
@Override
public boolean contains(Object o)
{
Node current=head;
while(current.next!=null)
{
current=current.next;
if(current.data.equals(o))
{
return true;
}
}
return false;
}
@Override
public boolean containsAll(Collection c)
{
// TODO Auto-generated method stub
return false;
}
@Override
public Object get(int index)
{
Node current;
current=head.next;
for(int i=0;i<index;i++)
{
current=current.next;
}
return current.data;
}
@Override
public int indexOf(Object o)
{
int i;
Node current=head;
for(i=0;i<(Integer)head.data;i++)
{
current=current.next;
if(current.data.equals(o))
{
break;
}
}
if(i<(Integer)head.data)
{
return i;
}
return -1;
}
@Override
public boolean isEmpty()
{
if(head.next!=null)
{
return true;
}
return false;
}
@Override
public Iterator iterator()
{
return new Iterator()
{
Node d=head.next;
public boolean hasNext()
{
if(d!=null)
{
return true;
}
return false;
}
public Object next()
{
Object obj=d.data;
d=d.next;
return obj;
}
public void remove()
{
}

};
}
public int lastIndexOf(Object o)
{
Node current=head;
int i=0,j=-1;
while(current.next!=null)
{
current=current.next;
i++;
if(current.data.equals(o))
{
j=i;
}
}
return j;
}
@Override
public ListIterator listIterator()
{
return null;
}
@Override
public ListIterator listIterator(int index)
{
// TODO Auto-generated method stub
return null;
}
@Override
public Object remove(int index)
{
Node current=head;
Node previous=null;
for(int i=0;i<index;i++)
{
previous=current;
current=current.next;
}
previous.next=current.next;
head.data=(Integer)head.data-1;
return current.data;
}
@Override
public boolean remove(Object o)
{
Node current=head;
Node previous=null;
while(current.next!=null)
{
previous=current;
current=current.next;
if(current.data.equals(o))
{
break;
}
}
if(current.next!=null)
{
previous.next=current.next;
head.data=(Integer)head.data-1;
return true;
}
return false;
}
@Override
public boolean removeAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean retainAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
@Override
public Object set(int index, Object element)
{
Node current;
current=head;
for(int i=0;i<index;i++)
{
current=current.next;
}
Object temp=current.data;
current.data=element;
return temp;
}
@Override
public int size()
{
return (Integer)head.data;
}
@Override
public List subList(int fromIndex, int toIndex) {
// TODO Auto-generated method stub
return null;
}
@Override
public Object[] toArray() {
// TODO Auto-generated method stub
return null;
}
@Override
public Object[] toArray(Object[] a) {
// TODO Auto-generated method stub
return null;
}
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
return super.clone();
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return super.equals(obj);
}
@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
super.finalize();
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return super.hashCode();
}
@Override
public String toString() {
// TODO Auto-generated method stub
return super.toString();
}

}