自己动手实现LinkedList
2016-06-02 20:59
302 查看
实现了LinkedList的增删改查方法,直接上代码。。。
public class YmhLinkedList { private Node first; private Node last; int size; public YmhLinkedList() { } //增 public void add(Object obj) { if (first == null) { first = new Node(obj); last = first; } else { Node node = new Node(obj); last.next = node; node.prev = last; last = node; } size++; } public void add(int index, Object obj) { rangecheck(index); Node node = new Node(obj); Node temp = first; for (int i = 0; i < index; i++) { temp = temp.next; } if (temp.prev != null && temp.next != null) { Node prevNode = temp.prev; prevNode.next = node; node.prev = prevNode; node.next = temp; temp.prev = node; } else if (temp.prev == null) { first = node; temp.prev = node; node.next = temp; } else if (temp.next == null) { temp.next = node; node.prev = temp; last = node; } size++; } //删 public Object remove(int index) { rangecheck(index); Node temp = first; for (int i = 0; i < index; i++) { temp = temp.next; } Object oldValue = temp.value; if (temp.prev != null && temp.next != null) { temp.prev.next = temp.next; temp.next.prev = temp.prev; temp = null; } else if (temp.prev == null) { first = temp.next; temp.next.prev = null; temp = null; } else if (temp.next == null) { last = temp.prev; temp.prev.next = null; temp = null; } size--; return oldValue; } public boolean remove(Object obj) { Node temp = first; for (int i = 0; i < size; i++) { if (obj.equals(temp.value)) { remove(i); return true; } temp = temp.next; } return false; } //改 public Object set(int index, Object obj) { rangecheck(index); Node temp = first; for (int i = 0; i < index; i++) { temp = temp.next; } Object oldValue = temp.value; temp.value = obj; return oldValue; } //查 public Object get(int index) { rangecheck(index); Node temp = first; for (int i = 0; i < index; i++) { temp = temp.next; } return temp.value; } private void rangecheck(int index) { if (index < 0 || index > size) { try { throw new MyException(); } catch (MyException e) { e.printStackTrace(); } } } public int size() { return size; } public boolean isEmpty() { return size == 0; } }
相关文章推荐
- Python动态类型的学习---引用的理解
- 土人系列AS入门教程 -- 对象篇
- C#托管堆对象实例包含内容分析
- C#实现获取不同对象中名称相同属性的方法
- javascript asp教程第十一课--Application 对象
- PowerShell中使用Out-String命令把对象转换成字符串输出的例子
- VBS教程:对象-正则表达式(RegExp)对象
- C#检查指定对象是否存在于ArrayList集合中的方法
- sql2008启动代理未将对象应用到实例解决方案
- C#编程自学之类和对象
- C++中对象的常引用、动态建立和释放相关知识讲解
- php中将一个对象保存到Session中的方法
- php对象和数组相互转换的方法
- PHP中把对象转换为关联数组代码分享
- C#写入对象或集合类型数据到xml文件的方法
- C#利用反射来判断对象是否包含某个属性的实现方法
- ASP.NET中使用Application对象实现简单在线人数统计功能
- JavaScript Math 对象常用方法总结
- asp提示Server 对象 错误 ASP 0178 : 80070005
- Javascript 对象的解释