自己动手用Java写链表
原创
©著作权归作者所有:来自51CTO博客作者IT枫斗者的原创作品,请联系作者获取转载授权,否则将追究法律责任
自己动手用Java写链表
常见的底层代码,很多一目了然的东西,看着很简单,但是当我们动手写的时候就会出现问题,比如常见的linklist,还真不是一件容易的事,比如结点之间的指向,下面写了几个
public class MyLinkList<T> {
private Node<T> head;
public MyLinkList() {
head = new Node<>(null);
}
public void addFirst(T t){
Node<T> node = new Node<T>(t);
node.next = head.next;
head.next = node;
}
public void addLast(T t){
Node<T> node = new Node<T>(t);
Node<T> tmpNode = head;
while(tmpNode.next != null){
tmpNode = tmpNode.next;
}
tmpNode.next = node;
}
public void add(T t, int i){
int idx = 0;
Node<T> tmpNode = head;
while(idx++ != i){
tmpNode = tmpNode.next;
}
Node<T> node = new Node<T>(t);
node.next = tmpNode.next;
tmpNode.next = node;
}
public void reverse(T){
// 空表表示返回
if (head.next == null){
return;
}
Node<T> preNode= head.next;
Node<T> nextNode= head.next.next;
//将第一个结点与第二个结点断掉,避免形成环
head.next.next = null;
while (nextNode != null){
Node<T> tmpNextNode = nextNode.next;
nextNode.next = preNode;
preNode = nextNode;
nextNode = tmpNextNode;
}
head.next = preNode;
}
}