package List;
public class List
{
private static class Node
{
T nodeValue;
Node next;
Node(T nodeValue, Node next)
{
this.nodeValue=nodeValue;
this.next =next;
}
Node(T nodeValue)
{
this.nodeValue=nodeValue;
this.next=null;
}
}
private Node head,p,q,m;
public List()
{
head=null;
}
public boolean isEmpty()//判断链表是否为空
{
if(head==null)
{
return true;
}
else
{
return false;
}
}
public int Length()//返回当前链表中对象的个数
{
int size=0;
p=head;
while(p!=null)
{
size++;
p=p.next;
}
return size;
}
public void Add(T value) //在表尾添加某个对象
{
q=head;
p=new Node(value);
if(!isEmpty())
{
while(q.next!=null)
{
q=q.next;
}
q.next=p;
p.next=null;
}
else
{
p.next=head;
head=p;
}
}
public void AddHead(T value)//在表头添加某个对象
{
p=new Node(value);
p.next=head;
head=p;
}
public void getData(int n)//取得某个位置的对象。构造main函数进行测试。
{
int count=1;
if(n>Length())
{
System.out.println("对不起,你输入的值已超出范围");
}
else
{
p=head;
while(p!=null)
{
if(count==n)
{
System.out.println("第"+n+"个数值为:"+p.nodeValue);
break;
}
count++;
p=p.next;
}
}
}
public void Insert(int n,T value)//在某个位置插入对象
{
int count=1;
p=head;
m=new Node(value);
while(p!=null)
{
if(count==n)
{
if(p!=head)
{
q.next=m;
m.next=p;
}
else
{
m.next=head;
head=m;
}
}
count++;
q=p;
p=p.next;
}
}
public void Delete(int n)//在某个位置删除对象
{
int count=1;
p=head;
while(p!=null)
{
if(count==n)
{
if(p!=head)
{
q.next=p.next;
}
else
{
head=head.next;
}
}
count++;
q=p;
p=p.next;
}
}
public void Delete_v(T x)//删除链表中与x相同的元素
{
p=head;
int flag=0;
while(p!=null)
{
if(p.nodeValue==x)
{
flag=1;
if(p!=head)
{
q.next=p.next;
}
else
{
head=head.next;
}
}
q=p;
p=p.next;
}
if(flag==0)
{
System.out.println("对不起没有找到元素:"+x);
}
}
public void Traverse()//遍历链表,打印出所有的元素
{
p=head;
System.out.print("遍历链表:");
while(p!=null)
{
System.out.print(p.nodeValue);
System.out.print(" ");
p=p.next;
}
System.out.println();
}
public static void main(String args[])
{
List L = new List();
L.Add(4);
if(!L.isEmpty())
{
System.out.println("不空");
}
else
{
System.out.println("空");
}
L.Add(67);
L.Add(55);
L.AddHead(55);
L.AddHead(3);
for(int i=0;i<=L.Length();i++)
{
L.getData(i);
}
L.Traverse();
L.Insert(1,9);
L.Delete(5);
L.Delete(2);
L.Delete_v(5);
L.Delete_v(55);
L.Traverse();
}
}
分享到:
2012-01-18 11:19
浏览 460
评论