package ShuangXiangLianBiao;
public class ShuangXiangLianBiao {
public Node head;
public Node tail;
public Node pointer;
public int value;
public int size=0;
public ShuangXiangLianBiao()
{
head=new Node();
tail=head;
tail.LinkNext(head);
head.UpRoot(tail);
}
//插入尾节点
public void AddLastNode(int value)
{
Node node =new Node(value);
if(size==0)
{
head.setValue(value);
size++;
}
else
{
tail.LinkNext(node);
node.UpRoot(tail);
tail=node;
tail.LinkNext(head);
head.UpRoot(tail);
size++;
}
}
//打印链表
public void PrintList()
{
pointer=head.next();
System.out.print(head.getValue()+" ");
while(pointer!=head)
{
System.out.print(pointer.getValue()+" ");
pointer=pointer.next();
}
}
//在指定位置之前插入
public void InsertNode(int pos,int value)
{
if(pos>size) pos=pos%size;
int current=1;
pointer=head;
while(current<pos-1)
{
current++;
pointer=pointer.next();
}
Node node=new Node(value);
node.LinkNext(pointer.next());
node.UpRoot(pointer);
pointer.LinkNext(node);
pointer.next().next().UpRoot(node);
}
//删除指定节点
public void DeleteNode(int pos)
{
pointer=head;
Node q=pointer;
int current=1;
while(current<pos)
{
q=pointer;
pointer=pointer.next();
current++;
}
q.LinkNext(pointer.next());
pointer.next().UpRoot(q);
pointer.LinkNext(null);
}
public void Exchange()
{
int Odd=1;
int current=2;
pointer=head.next();
while(current<size)
{
if(current%2==1)
{
InsertNode(Odd+1,pointer.getValue());
DeleteNode(current);
Odd++;
}
current++;
pointer=pointer.next();
}
}
}
class Node{
Node next,root;
int value;
public Node(int value)
{
this.value=value;
}
public Node(){}
public void LinkNext(Node node)
{
this.next=node;
}
public Node next()
{
return this.next;
}
public void UpRoot(Node node)
{
this.root=node;
}
public Node root()
{
return this.root;
}
public int getValue()
{
return this.value;
}
public void setValue(int value)
{
this.value=value;
}
}
循环双链表
最新推荐文章于 2024-06-22 14:39:19 发布