通过 pre 和 next 字段实现双向链表
class TwoLinkedList{
private final DoubleNode head = new DoubleNode(0,"","");
public void add(DoubleNode doubleNode){
DoubleNode temp = head;
while (temp.getNext() != null){
temp = temp.getNext();
}
temp.setNext(doubleNode);
doubleNode.setPre(temp);
}
public void addByOrder(DoubleNode doubleNode){
DoubleNode temp = head.getNext();
while(true){
if (temp.getNext() == null){
temp.setNext(doubleNode);
doubleNode.setPre(temp);
break;
}
if (temp.getNo() == doubleNode.getNo()){
return;
}
if (temp.getNo() > doubleNode.getNo()){
temp.getPre().setNext(doubleNode);
doubleNode.setNext(temp);
break;
}
temp = temp.getNext();
}
}
public void delete(int no){
if (head.getNext() == null){
return;
}
DoubleNode temp = head.getNext();
while(temp != null){
if (temp.getNo() == no){
temp.getPre().setNext(temp.getNext());
if (temp.getNext() != null) temp.getNext().setPre(temp.getPre());
break;
}
temp = temp.getNext();
}
}
}
class DoubleNode {
private int no;
private String name;
private String nickName;
private DoubleNode pre;
private DoubleNode next;
public DoubleNode(int no, String name, String nickName) {
this.no = no;
this.name = name;
this.nickName = nickName;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public DoubleNode getPre() {
return pre;
}
public void setPre(DoubleNode pre) {
this.pre = pre;
}
public DoubleNode getNext() {
return next;
}
public void setNext(DoubleNode next) {
this.next = next;
}
@Override
public String toString() {
return "TwoNode{" +
"no=" + no +
", name='" + name + '\'' +
", nickName='" + nickName + '\'' +
'}';
}
}