`

双向循环链表

J# 
阅读更多
package hehaiwen;


public class DLinkList {
DLinkList prior;
DLinkList next;
Object o;
DLinkList()
{

}
DLinkList(DLinkList prior,DLinkList next,Object o)
{
this.prior=prior;
this.next=next;
this.o=o;
}

}
package hehaiwen;

public class DoubleLinkList {
DLinkList dl;
public DoubleLinkList()
{
dl=new DLinkList();
dl.next=dl;
dl.prior=dl;
}
public void insert(Object o)
{
DLinkList tmp=dl;
while(tmp.next!=dl)
{
tmp=tmp.next;
}
DLinkList s=new DLinkList();
s.o=o;
s.next=tmp.next;
dl.prior=s;
tmp.next=s;
s.prior=tmp;
}
public void insert(int index,Object o)
{
DLinkList tmp=dl;
int j=0;
while(j<index-1)
{
tmp=tmp.next;
++j;
}
DLinkList s=new DLinkList();
s.o=o;
s.next=tmp.next;
tmp.next.prior=s;
tmp.next=s;
s.prior=tmp;
}
public void delete(Object o)
{
int j=0;
DLinkList tmp=dl;
while(tmp.next!=dl)
{
if(tmp.o==o)
{
delete(j);
}
j++;
tmp=tmp.next;
}
}
public int  getSize()
{
int j=0;
DLinkList tmp=dl;
while(tmp.next!=dl)
{
j++;
}
return j;
}
public Object find(int index)
{
DLinkList tmp=dl;
int j=0;
while(tmp.next!=dl&&j<index-1)
{
j++;
tmp=tmp.next;
}
return tmp.next.o;
}
public void delete(int index)
{
int j=0;
DLinkList tmp=dl;
while(j<index-1)
{
tmp=tmp.next;
++j;
}
   tmp.next=tmp.next.next;
   tmp.next.next.prior=tmp;
}
public void display()
{
DLinkList tmp=dl;
while(tmp.next!=dl)
{
System.out.println(tmp.next.o);
tmp=tmp.next;
}


}
public static void main(String args[])
{
DoubleLinkList dl=new DoubleLinkList();
dl.insert(2);
dl.insert(3);
dl.insert(4);
dl.insert(5);
dl.insert(6);
    dl.insert(2, 22);
    dl.delete(3);
    dl.delete(new Integer(2));
dl.display();
System.out.println(dl.find(2));
System.out.println(dl.find(5));

}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics