public class List<E>
{
private Node<E> head;//定义链表头节点
private Node<E> last;//定义链表尾节点
private int len;//链表的长度
public void add(E obj)//为链表添加节点
{
Node<E> linshi=new Node<E>();//创建一个临时节点
linshi.data=obj;
if(head==null) //判断是头节点是否为空
{
head=linshi;
last=linshi;
}
last.next=linshi;
last=linshi;
len++;
}
public E move(int index) //移除链表节点
{
if(index<len&&index>=0) //判断要删除的节点是否超范围
{
Node<E> linshi1=new Node<E>();
Node<E> linshi2=new Node<E>();
linshi2=linshi1=head;
if(index==0) //当要删除的头节点时,将head向下移
{
head=head.next;
len--;
return linshi1.data;
}
for(int i=0;i<index;i++) //遍历链表找到要删除的节点
{
linshi1=linshi2;
linshi2=linshi2.next;
}
linshi1.next=linshi2.next;
if(index==len-1) //当要删除的节点是尾节点时,尾节点向前移
{
last=linshi1;
}
len--;
return linshi2.data;
}
else
{
System.out.println("超出范围");
}
return null;
}
public E get(int index) //得到第index个节点的数据
{
if(index<len&&index>=0)//判断是否超范围
{
Node<E> linshi=new Node<E>();
linshi=head;
for(int i=0;i<index;i++)//遍历链表,找到节点
{
linshi=linshi.next;
}
return linshi.data;
}
else
{
System.out.println("超出范围");
}
return null;
}
public int size() //返回节点的长度
{
return len;
}
public static void main(String[] args)
{
List<Integer> a=new List<Integer>();//创建一个放Integer数据的链表
for(int i=0;i<5;i++)
a.add(i); //加入5个点节点
System.out.println("删除:"+a.move(3)); //删除下标为几的节点
a.add(9); //加入一个节点
for(int i=0;i<a.size();i++) //显示所有节点数据
System.out.println(a.get(i));
}
}
此为主体代码,再要创建一个节点类,如下:
public class Node<E> //节点类
{
public Node<E> next;
public E data;
}
和我学的C语言一样,链表是个很好的工具,方便了程序的许多功能,链表一学通,就会觉得很简单,既然会添加节点,那就会插入和删除节点,也可以把所有的节点数据都输出,一样通,样样通,链表的灵活就在于他的节点里的next,可以通过next很轻松的找到其它的节点,当创建数组时,范围是确定的,不能灵活的运用,而链表不同,他可以不确定范围,随时用随时创建,很方便。
java里面给我们封装了LinkedList 链表队列 ,只需要创建对象,再调用里面的函数就可以了。