单向链表的方法优化2014-07-11前几天写了一篇关于单向链表的实现方法,单向链表的具体实现在里面都有说明,见博客:http://cq520.iteye.com/blog/1853186不过细心的朋友也许发现了,上次写的几个方法其实是存在漏洞的,插入方法与删除方法都不能操作第一个元素,而实际上操作第一个元素的方法与操作其他元素的方法是一样的,只是代码描叙上有些差异,原因在于:首结点不存在前结点对它的引用优化之后的代码如下:Java代码
/*** 向链表中插入新元素的方法 * @param index 插入的位置* @param obj */public void insert(int index,Object obj){Node node=head;Node sert=new Node(obj);int j=1;//插入的位置不合理if(index<1||index>size()+1){try {//抛出异常throw new ArrayIndexOutOfBoundsException();} catch (Exception e) {e.printStackTrace();}}else{//如果链表为空则在第一个位置添加元素if(head==null){add(sert);}else{if(index==1){sert.next=head;head=sert;}else{while(j<index-1){node=node.next;j++;}sert.next=node.next;node.next=sert;}size++;}}}
删除元素的方法:Java代码
/** * 删除指定位置的结点 * @param index 索引 */public void delete(int index){if(index<1||index>size()){try{throw new ArrayIndexOutOfBoundsException();}catch(Exception e){e.printStackTrace();}}else{Node node=head;if(index==1){head=head.next;}else{int j=1;while(node!=null&&j<index-1){//查找到第i-1个元素node=node.next;j++;}node.next=node.next.next;//删除第index个元素}size--;}}