class Node
{
int nodeId;
String nodeName;
Node next=null;
Node(int id,String name)
{
nodeId=id;
nodeName=name;
}
public String toString()
{
return nodeId+"-"+nodeName;
}
}
class Link
{
Node head=null;
static Node tail=null;
void insertFirst(Node node)//从头插入
{
Node current=head;
Node previous=head;
if(current==null)
{
node.next=head;
head=node;
current=node;
previous=head;
}
else
{
while(current.nodeId<node.nodeId)
{
if(current.next!=null)
{
previous=current;
current=current.next;
}
else
{
current.next=node;
node.next=null;
return;
}
}
if(current==head)//current,not previous
{
node.next=head;
head=node;
}
else
{
node.next=current;
previous.next=node;
}
}
}
Node search(int id)throws NullPointerException//查找指定结点
{
Node current=head;
while(current.nodeId!=id)
{
current=current.next;
}
return current;
}
void delete(int id)//删除指定结点
{
Node current=head;
Node previous=head;
if(current.nodeId==id)//如果指定结点为第一个结点
{
head=current.next;
current.next=null;
}
else
{
while(current.nodeId!=id)
{
previous=current;
current=current.next;
}
if(current.next!=null)
{
previous.next=current.next;
current.next=null;
}
else//双端列表尾指针变化
{
previous.next=current.next;
current.next=null;
tail=previous;
}
}
}
void showAll()//打印所有
{
Node current=head;
while(current!=null)
{
System.out.println(current);
current=current.next;
}
}
public static void main(String args[])
{
Link l=new Link();
System.out.println("Insert:");
l.insertFirst(new Node(4,"D"));
l.insertFirst(new Node(5,"C"));
l.insertFirst(new Node(3,"E"));
l.insertFirst(new Node(1,"B"));
l.insertFirst(new Node(2,"A"));
l.showAll();
}
}