创建一条循环双链表

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;
	}
			
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值