📄 linkdemo.java
字号:
//LinkDemo.java
import java.io.*;
public class LinkDemo
{
/*构成链表的结点定义*/
class Node
{
Object data;
Node next;
Node(Object d)
{
data=d;
next=null;
}
}
//用变量来实现表头
private Node Head=null;
private Node Tail=null;
private Node Pointer=null;
private int Length=0;
/*清空整个链表*/
public void deleteAll()
{
Head=null;
Tail=null;
Pointer=null;
Length=0;
}
//链表复位,使第一个结点成为当前结点
public void reset()
{
Pointer=null;
}
/*判断链表是否为空*/
public boolean isEmpty()
{
return(Length==0);
}
/*判断当前结点是否为最后一个结点*/
public boolean isEnd()
{
if(Length==0)
throw new java.lang.NullPointerException();
else if(Length==1)
return true;
else
return(cursor()==Tail);
}
//返回当前结点的下一个结点的值,并使其成为当前结点
public Object nextNode()
{
if(Length==1)
throw new java.util.NoSuchElementException();
else if(Length==0)
throw new java.lang.NullPointerException();
else
{
Node temp=cursor();
Pointer=temp;
if(temp!=Tail)
return(temp.next.data);
else
throw new java.util.NoSuchElementException();
}
}
//返回当前结点的值
public Object currentNode()
{
Node temp=cursor();
return temp.data;
}
/*在当前结点前插入一个结点,并使其成为当前结点*/
public void insert(Object d)
{
Node e=new Node(d);
if(Length==0)
{
Tail=e;
Head=e;
}
else
{
Node temp=cursor();
e.next=temp;
if(Pointer==null)
Head=e;
else
Pointer.next=e;
}
Length++;
}
//返回链表的大小
public int size()
{
return (Length);
}
/*将当前结点移出链表,下一个结点成为当前结点,如果移出的结点是最后一个结点,
则第一个结点成为当前结点*/
public Object remove()
{
Object temp;
if(Length==0)
throw new java.util.NoSuchElementException();
else if(Length==1)
{
temp=Head.data;
deleteAll();
}
else
{
Node cur=cursor();
temp=cur.data;
if(cur==Head)
Head=cur.next;
else if(cur==Tail)
{
Pointer.next=null;
Tail=Pointer;
reset();
}
else
Pointer.next=cur.next;
Length--;
}
return temp;
}
/*返回当前结点的指针*/
private Node cursor()
{
if(Head==null)
throw new java.lang.NullPointerException();
else if(Pointer==null)
return Head;
else
return Pointer.next;
}
/*链表的简单应用举例*/
public static void main(String[] args)
{
//构造链表并创建10给节点
LinkDemo a=new LinkDemo ();
for(int i=1;i<=10;i++)
a.insert(new Integer(i));
//使链表复位
a.reset();
//输出链表的节点
for( int j=1; j< a.Length; j++)
System.out.println(a.nextNode());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -