双链表节点定义
public class DLinkList {
private Node p;
public DLinkList() {
this.p = new Node(null,null,null);
}
public Node getP() {
return p;
}
public void setP(Node p) {
this.p = p;
}
}
双链表结构定义
public class DLinkList {
private Node p;
public DLinkList() {
this.p = new Node(null,null,null);
}
public Node getP() {
return p;
}
public void setP(Node p) {
this.p = p;
}
}
双链表工具类
public class DLinkListUtil {
public void TInsert(Object obj,DLinkList dl){
Node q = dl.getP();
while (q.getNext()!=null){
q = q.getNext();
}
Node node = new Node(q, obj, null);
q.setNext(node);
}
public void HInsert(Object obj,DLinkList dl){
Node node = new Node(dl.getP(), obj, dl.getP().getNext());
dl.getP().setNext(node);
if(node.getNext()!=null)
node.getNext().setPre(node);
}
public Node FindElem(Object obj,DLinkList dl){
Node q = dl.getP();
while (q!=null&&!obj.equals(q.getData())){
q = q.getNext();
}
if(q==null){
System.out.println("未找到!");
return dl.getP();
}
return q;
}
public void insert(Object obj,Node node,DLinkList dl){
Node nd = new Node(node, obj, node.getNext());
node.getNext().setPre(nd);
node.setNext(nd);
}
public void delete(Node node){
node.getPre().setNext(node.getNext());
node.getNext().setPre(node.getPre());
try {
node.finalize();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
public void show(DLinkList dl){
Node q = dl.getP();
int count=0;
while (q.getNext()!=null){
q=q.getNext();
System.out.print("data:"+q.getData()+" ");
count++;
if(count%6==0){
System.out.println();
}
}
}
}
测试类
public class Test {
public static void main(String[] args) {
DLinkList dLinkList1 = new DLinkList();
DLinkList dLinkList2 = new DLinkList();
DLinkListUtil util = new DLinkListUtil();
System.out.println("---------------------------------------------------------");
for (int i=0;i<10;i++){
util.HInsert(i,dLinkList1);
}
util.show(dLinkList1);
System.out.println();
System.out.println("---------------------------------------------------------");
for (int i=0;i<10;i++){
util.TInsert(i,dLinkList2);
}
System.out.println();
util.show(dLinkList2);
System.out.println();
System.out.println("---------------------------------------------------------");
Node node = util.FindElem(6, dLinkList1);
System.out.println("该节点data:"+node.getData());
System.out.println("---------------------------------------------------------");
util.insert("i",node,dLinkList1);
util.show(dLinkList1);
System.out.println();
System.out.println("---------------------------------------------------------");
util.delete(node);
util.show(dLinkList1);
System.out.println();
System.out.println("---------------------------------------------------------");
}
}