public void swap2(Node p1, Node p2){ if (p1.getNextNode() == p2) { Node tmp1= p2.getNextNode(); Node tmp2= p1.getPreviousNode(); p1.setNextNode(tmp1); p1.setPreviousNode(p2); p2.setPreviousNode(tmp2); tmp2.setNextNode(p2); p2.setNextNode(p1); tmp1.setPreviousNode(p1); } else if (p1.getPreviousNode() == p2) { Node tmp1= p1.getNextNode(); Node tmp2= p2.getPreviousNode(); p2.setNextNode(tmp2); p2.setPreviousNode(p1); p1.setPreviousNode(tmp1); tmp1.setNextNode(p1); p1.setNextNode(p2); tmp2.setPreviousNode(p2); } else { Node tmp1= p1.getNextNode(); Node tmp2= p1.getPreviousNode(); if (p1.getPreviousNode() != null) p1.getPreviousNode().setNextNode(p2); if (p1.getNextNode() != null) p1.getNextNode().setPreviousNode(p2); if (p2.getPreviousNode() != null) p2.getPreviousNode().setNextNode(p1); if (p2.getNextNode() != null) p2.getNextNode().setPreviousNode(p1); p1.setNextNode(p2.getNextNode()); p1.setPreviousNode(p2.getPreviousNode()); p2.setNextNode(tmp1); p2.setPreviousNode(tmp2); } if (p1 == this.head) this.head = p2; else if (p2 == this.head) this.head = p1; if (p1 == this.tail) this.tail = p2; else if (p2 == this.tail) this.tail = p1; }