package DataStructureTestSinglyLinkedList;
import DataStructureTest.LList;
public class CirDoublyLinkedList<T> implements LList<T> {
public DLinkNode<T> head;
public CirDoublyLinkedList()
{
this.head.next=this.head;
}
public boolean isEmpty() {
return this.head.next==null;
}
@Override
public int length() {
// TODO 自动生成的方法存根
DLinkNode<T> p = this.head.next;
int n=0;
while(p.next!=this.head)
{
n++;
p=p.next;
}
return n;
}
@Override
public T get(int i) {
// TODO 自动生成的方法存根
if(i>=0)
{
DLinkNode<T> p= this.head.next;
for(int j=0;p.next!=this.head&&j<i;j++)
{
p=p.next;
}
if(p.next!=this.head)
return p.next.data;
}
return null;
}
public void set(int i, T x) {
// TODO 自动生成的方法存根
if(x==null)
return;
if(i>=0)
{
DLinkNode<T>p=this.head;
for(int j=0;p.next!=this.head&&j<i;j++)
p=p.next;
if(p.next!=head)
{
DLinkNode<T> q =new DLinkNode<T> ( x,p,p.next);
p.next.prev=q;
p.next=q;
}
}
return;
}
@Override
public void insert(int i, T x) {
// TODO 自动生成的方法存根
if(x==null)
return;
if(i>=0)
{
DLinkNode<T> p =this.head;
for(int j=0;p.next!=this.head&&j<i;j++)
{
p=p.next;
}
DLinkNode<T> q = new DLinkNode<T>(x,p,p.next);
p.next.prev=q;
p.next=q;
}
return;
}
@Override
public void append(T x) {
// TODO 自动生成的方法存根
if(x==null)
return;
DLinkNode<T>q= new DLinkNode<T>(x,this.head.prev,this.head);
this.head.prev.next=q;
this.head.prev=q;
}
@Override
public T remove(int i) {
// TODO 自动生成的方法存根
if(i>=0)
{
DLinkNode<T> p= this.head.next;
for(int j=0;p.next!=this.head&&j<i;j++)
{
p=p.next;
}
if(p!=head)
{
T old=p.next.data;
p.next=p.next.next;
p.next.prev=p;
return old;
}
}
return null;
}
@Override
public void removeAll() {
// TODO 自动生成的方法存根
this.head.next=this.head;
this.head.prev=this.head;
}
@Override
public T search(Object key) {
// TODO 自动生成的方法存根
return null;
}
}
创建一条循环双链表
最新推荐文章于 2023-01-24 16:48:30 发布