package com.coding.basic;
public class LinkedList implements List {
private Node head = new Node(null,null);
private Node last;
private int size;
private static class Node{
Object data;
Node next;
Node(Object data,Node next){
this.data = data;
this.next = next;
}
}
public void add(Object o){
if(size==0){
Node node = new Node(o,null);
head = node;
last = node;
size++;
}else{
Node node = new Node(o,null);
last.next = node;
last = node;
size++;
}
}
public void add(int index , Object o){
if(index>size){
System.out.println("�����"+index+"���ڵ�ǰ��"+size);
}
Node n = head;
Node n1 = head;
for(int i=0;i<index-1;i++){
n1 = n1.next;
}
for(int i=0;i<index;i++){
n = n.next;
}
Node newnode = new Node(o,n);
n1.next = newnode;
newnode.next = n;
// if(index+1<=size){
// last = n;
// }
size++;
}
public Object get(int index){
Node n =head;
for(int i=0;i<index;i++){
n =n.next;
}
return n.data;
}
public Object remove(int index){
System.out.println(index);
Node n =head;
for(int i =0 ;i<index;i++){
n=n.next;
}
System.out.println(n.data);
n.next=n.next.next;
size--;
return n.data;
}
public int size(){
return size;
}
public void addFirst(Object o){
Node node = new Node(o,null);
node.next = head;
head = node;
size++;
}
public void addLast(Object o){
Node node = new Node(o,null);
last.next = node;
last =node;
}
public Object removeFirst(){
head=head.next;
size--;
return null;
}
public Object removeLast(){
Node nn = head;
for(int i = 0;i<size-2;i++){
nn = nn.next;
}
nn.next = null;
last = nn;
size--;
return null;
}
public Iterator iterator(){
return new Iter();
}
private int nextnum;
public class Iter implements Iterator{
@Override
public boolean hasNext() {
return nextnum!=size;
}
@Override
public Object next() {
return get(nextnum++);
}
}
public static void main(String args[]){
LinkedList l = new LinkedList();
l.add(1);
l.add(2);
l.add(3);
l.add(4);
l.add(2, "wo");
l.removeFirst();
l.addFirst(1);
l.removeLast();
l.addLast(4);
while(l.iterator().hasNext()){
System.out.println(l.iterator().next());
}
// System.out.println(l.size());
// System.out.println(l.get(0));
// System.out.println(l.get(1));
// System.out.println(l.get(2));
// System.out.println(l.get(3));
//System.out.println(l.get(4));
}
}