双链表

说明:单链表结点中只有一个指向其后继的指针,使得单链表只能从头结点依次顺序地向后访问。为了克服单链表只能从前往后的访问的缺陷,引入prior指针,使得链表可以向前访问。
结构示意图:

建表

//尾插法建表
public DLinkList buildDLinkList(int[] arr) {
		DLinkList head = new DLinkList();
		head.next = null;
		head.prior = null;
		head.data = 0;
		DLinkList r = head;
		int count = 0;
		while (count < arr.length) {
			DLinkList p = new DLinkList();
			p.data = arr[count++];
			p.next = r.next;
			p.prior = r;
			r.next = p;
			r = p;
		}
		return head;
	}

插入删除

    //插入
	public DLinkList insert(DLinkList head,int posi,int value) {
		DLinkList p=head.next;
		int count=0;
		while (count<posi) {
			p=p.next;
			count++;
		}
		DLinkList q=new DLinkList();
		q.data=value;
		q.next=p.next;
		q.prior=p;
		p.next.prior=q;
		p.next=q;
		return head;
	}

    //删除
    	public DLinkList delete(DLinkList head,int posi) {
		DLinkList p=head;
		int count=0;
		while (count<posi) {
			p=p.next;
			count++;
		}
		p.next.next.prior=p;
		p.next=p.next.next;
		return head;
	}

循环链表

循环单链表

循环双链表

静态链表