链表(LinkedList)
来源:互联网 发布:第二人称的小说知乎 编辑:程序博客网 时间:2024/06/16 00:39
原文地址:http://www.tianshouzhi.com/api/tutorials/basicalgorithm/44
原文中SingleLinkList的remove方法有问题,因为是” Node current=firstNode.getNext();”,所以导致链表的第一个节点删不掉。
修改如下:
public class SingleLinkList<T> { // 链表中第一个节点 protected Node firstNode = null; // 链表中维护的节点总量 protected int size; /** * 每次添加都是添加到最前面 * @param element */ public void addFirst(T element){ Node node = new Node(); node.setData(element); node.setNext(firstNode); firstNode = node; size++; } /** * 删除某个节点 * @param element * @return 删除成功返回true,失败返回false */ public boolean remove(T element){ if(size == 0){ return false; } if(element.equals(firstNode.getData())){ // 如果删除首节点 Node temp = firstNode; firstNode = firstNode.getNext(); temp = null; size--; return true; } // 如果删除除首节点之外的其他节点 Node pre = firstNode; Node current = pre.getNext(); while(current != null){ if((current.getData() == null && element == null) || (element.equals(current.getData()))){ pre.setNext(current.getNext()); // 删除这个节点,将上一个节点指向这个节点的下一个节点 current = null; size--; return true; } pre = current; // 如果不是,上一个节点指向这个节点 current = current.getNext(); } return false; } /** * 是否包含某个元素 * @param element * @return 包含返回true,否则返回false */ public boolean contains(T element){ if(size == 0){ return false; } Node current = firstNode; while(current != null){ if((current.getData() == null && element == null) || (element.equals(current.getData()))){ return true; } current = current.getNext(); } return false; } public boolean isEmpty(){ return size == 0; } public int size(){ return size; } /** * 打印出所有的元素 */ public void display(){ if(!isEmpty()){ Node current = firstNode; while(current != null){ System.out.print(current.getData() + "\t"); current = current.getNext(); } } }}
阅读全文
0 0
- LinkedList 链表
- LinkedList(链表)
- LinkedList 链表
- 链表LinkedList
- 链表(LinkedList)
- 链表(LinkedList)类
- LinkedList--链表
- 集合(4-链表 LinkedList)
- JAVA实现LinkedList链表
- LinkedList
- LinkedList
- LinkedList
- LinkedList
- LinkedList
- LinkedList
- LinkedList
- LinkedList
- LinkedList
- MPLS VPN随堂笔记1
- VS code" ImportError: No module named '_tkinter' " 解决方法
- MPLS VPN随堂笔记2
- 删除maven本地库中下载不完全的jar包
- 自制MPLS解决路由黑洞实验
- 链表(LinkedList)
- 浅谈maven中的scope,systempath
- Android学习笔记十三之LinearLayout布局
- MPLS VPN随堂笔记3
- ★路由递归查询方法及相关图…
- JConsole监控Java程序的运行情况
- Android studio下 Waiting for target device to come online
- mysql安装图解
- 自制tunnel口建虚拟专网实验