双链表
说明:单链表结点中只有一个指向其后继的指针,使得单链表只能从头结点依次顺序地向后访问。为了克服单链表只能从前往后的访问的缺陷,引入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;
}