相当于LinkedList
链表由节点构成。由于只实现单向链表,所里节点里面只有next指针,没有previous指针。
public class MyNode {
private int data;
private MyNode next;
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public MyNode getNext() {
return next;
}
public void setNext(MyNode next) {
this.next = next;
}
}
链表实现,设置一个head和tail,分别是指向list第一个和最后一个节点的指针
public class MyLinkedList {
private MyNode head;
private MyNode tail;
private int size;
public MyLinkedList(){
size=0;
}
public int size(){
return size;
}
public int get(int index){
if(index<0||index>size-1)
throw new IndexOutOfBoundsException();
MyNode node = head.getNext();
for(int i=0;i<index;i++){
node=node.getNext();
}
return node.getData();
}
public void add(int num){
MyNode node = new MyNode();
node.setData(num);
if(head==null&&tail==null){
head=new MyNode();
tail=new MyNode();
head.setNext(node);
tail.setNext(node);
}else{
tail.getNext().setNext(node);
tail.setNext(node);
}
size++;
}
public void delete(int index){
if(index<0||index>size-1)
throw new IndexOutOfBoundsException();
MyNode node = head;
for(int i=0;i<index;i++){
node=node.getNext();
}
node.setNext(node.getNext().getNext());
if(node.getNext()==null)
tail.setNext(node);
size--;
}
public void clear(){
head=tail=null;
size=0;
}
public int getFirst(){
if(size==0)
throw new NullPointerException();
return head.getNext().getData();
}
public int getLast(){
if(size==0)
throw new NullPointerException();
return tail.getNext().getData();
}
public void addFirst(int num){
MyNode node=new MyNode();
node.setData(num);
if(size==0){
head=new MyNode();
tail=new MyNode();
node.setData(num);
head.setNext(node);
tail.setNext(node);
}else{
node.setNext(head.getNext());
head.setNext(node);
}
size++;
}
public void addLast(int num){
MyNode node=new MyNode();
node.setData(num);
if(size==0){
head=new MyNode();
tail=new MyNode();
node.setData(num);
head.setNext(node);
tail.setNext(node);
}else{
node.setNext(tail.getNext());
tail.setNext(node);
}
size++;
}
public void deleteFirst(){
if(size==0)
throw new NullPointerException();
head.setNext(head.getNext().getNext());
size--;
}
public void deleteLast(){
if(size==0)
throw new NullPointerException();
delete(size-1);
}
}