这里给出双向链表的基本操作说明,当然这里只是给出了一个统一的实现模板思路,具体问题还要具体分析。后序还会给出链表的一些应用实例。
packagejavaList;
importjava.util.Iterator;
public class MyLinkedList<AnyType> implements Iterable<AnyType> {
private int thesize;
//创建节点
private static class Node<AnyType>{
public AnyTypedata;
public Node<AnyType>prev;
public Node<AnyType>next;
public Node(AnyType d, Node<AnyType> p,Node<AnyType> q){
data = d;
prev = p;
next = q;
}
}
//清空链表
public void clear(){
Node<AnyType> head = new Node<AnyType>(null,null, null);
Node<AnyType> end = new Node<AnyType>(null, head,null);
head.next = end;
int thesize = 0;
}
//在结点p的前边添加结点
private void addBeforeQ(Node<AnyType>p, AnyType x){
//该句实现两个功能:1)创建新的结点newNode;2)连接结点:是的x的prev指向p的前驱,x的next指向p
Node<AnyType> newNode = new Node<AnyType>(x, p.prev, p);
//使得x的prev(前驱)的next(后继)指向x
newNode.prev.next = newNode;
//该句将p的prev(前驱)设为x
p.prev = newNode;
//链表加1
thesize++;
}
//删除结点元素
private AnyTyperemove(Node<AnyType> p){
//要移除结点p,先将p的后继的引向p的前驱
p.next.prev = p.prev;
//再将p的前驱的next指向p的后继
p.prev.next = p.next;
thesize--;
//返回删除结点的data值
return p.data;
}
@Override
public Iterator<AnyType> iterator() {
return null;
}
}
Java双向链表的创建结点,清空链表,添加结点,删除结点
最新推荐文章于 2022-04-27 18:05:36 发布