public class LinkedList<E> {
private class Node{
public E e;
public Node next;
public Node(E e,Node next){
this.e=e;
this.next=next;
}
public Node(E e){
this(e, null);
}
public Node(){
this(null,null);
}
public String toString(){
return e.toString();
}
}
private Node dummyHead;
int size;
public LinkedList(){
dummyHead=new Node();
size=0;
}
public int getSize(){
return size;
}
public boolean isEmpty(){
return size==0;
}
public void addFirst(E e){
add(0,e);
}
//插入元素
public void add(int index,E e){
if(index<0||index>size)
throw new IllegalArgumentException("add failse,illegal index");
Node prev=dummyHead;
for(int i=0;i<index;i++){
prev=prev.next;
}
prev.next=new Node(e,prev.next);
size++;
}
public void addLast(E e){
add(size,e);
}
//获取第index个元素
public E get(int index){
if(index<0||index>size)
throw new IllegalArgumentException("add failse,illegal index");
Node cur=dummyHead.next;
for(int i=0;i<index;i++){
cur=cur.next;
}
return cur.e;
}//获取第一个元素
public E getFirst(){
return get(0);
}//获取最后一个元素
public E getLast(){
return get(size-1);
}
//修改元素
public void set(int index,E e){
if(index<0||index>=size)
throw new IllegalArgumentException("add failse,illegal index");
Node cur=dummyHead.next;
for(int i=0;i<index;i++)
cur=cur.next;
cur.e=e;
}//是否存在某一元素
public boolean contains(E e){
Node cur=dummyHead.next;
while(cur!=null){
if(cur.e.equals(e))
return true;
cur=cur.next;
}
return false;
}
public String toString(){
StringBuilder res=new StringBuilder();
Node cur=dummyHead.next;
while(cur!=null){
res.append(cur+"->");
cur=cur.next;
}
res.append("NULL");
return res.toString();
}//删除元素
public E remove(int index,E e){
if(index<0||index>=size)
throw new IllegalArgumentException("add failse,illegal index");
Node prev=dummyHead;
for(int i=0;i<index;i++){
prev=prev.next;
}
Node del=prev.next;
prev.next=del.next;
del.next=null;
size--;
return del.e;
}
用java代码实现链表的创建,增删改查
最新推荐文章于 2024-01-27 16:26:35 发布