赞
踩
1、结构
(1)比单链表多了一个前驱指针(pre)
2、基本功能
(1)增加
newLinkNode.next = temp.next;
temp.next.pre = newLinkNode;
temp.next = newLinkNode;
newLinkNode.pre = temp;
注意:当在最后一个结点添加结点时不需要执行前两句,不然空出现空指针异常。
(2)修改
这个功能和单链表的操作基本一样
(3)删除
temp.next.pre = temp.pre
temp.pre.next = temp.next
注意:删除最后一个结点时,第二句不能使用,不然会出现空指针异常。
代码如下:
// 添加(按顺序) public void add(LinkNode1 linkNode) { LinkNode1 temp = head; boolean flag = false; while (true) { if (temp.next == null) { break; } if (temp.next.no > linkNode.no) { break; } else if (temp.next.no == linkNode.no) { flag = true; break; } temp = temp.next; } if (flag) { System.out.println("链表已存在该结点"); } else { if(temp.next != null){ linkNode.next = temp.next; temp.next.pre = linkNode; } temp.next = linkNode; linkNode.pre = temp; } }
代码如下:
//修改 public void update(LinkNode1 linkNode){ if(head.next == null){ System.out.println("链表为空"); return; } LinkNode1 temp = head; boolean flag = false; while (true){ if (temp.next == null){ break; } if(temp.next.no == linkNode.no){ flag = true; break; } temp = temp.next; } if(true){ temp.next.no = linkNode.no; temp.next.node = linkNode.node; }else { System.out.println("没有找到要修改的结点"); } }
代码如下:
//删除 public void del(LinkNode1 linkNode){ if(head.next == null){ System.out.println("链表为空"); return; } LinkNode1 temp = head.next; boolean flag = false; while (true){ if(temp == null){ break; } if(temp.no == linkNode.no){ flag = true; break; } temp = temp.next; } if(flag){ temp.pre.next = temp.next; if (temp.next != null) { temp.next.pre = temp.pre; } }else { System.out.println("没有找到该结点"); } System.out.println("此结点被删除:" + temp); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。