`
cq520
  • 浏览: 166801 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

单向链表的方法优化

阅读更多

       前几天写了一篇关于单向链表的实现方法,单向链表的具体实现在里面都有说明,见博客:http://cq520.iteye.com/blog/1853186

       不过细心的朋友也许发现了,上次写的几个方法其实是存在漏洞的,插入方法与删除方法都不能操作第一个元素,而实际上操作第一个元素的方法与操作其他元素的方法是一样的,只是代码描叙上有些差异,原因在于:首结点不存在前结点对它的引用

    优化之后的代码如下:

/**
 * 向链表中插入新元素的方法	
 * @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++;
		}
	}
}

 

 删除元素的方法:

 

/**
* 删除指定位置的结点
* @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--;
	}
}

 

 

 

 

0
3
分享到:
评论
1 楼 ae6623 2015-06-03  
敢问兄台,size()是咩。

<code>
if(index<1||index>size()+1){ 
</code>

相关推荐

    单向链表类模板_单向链表类模板_fastchq_

    以上是对单向链表类模板的简单概述,实际实现可能更复杂,包括错误处理、优化等。这个模板类可以用于存储任何类型的数据,使得代码更具复用性和灵活性。在使用时,只需要传入所需的数据类型即可,如`LinkedList&lt;int&gt;...

    C#单向链表的实现

    本文将详细讲解如何在C#中实现单向链表,结合源码解析来帮助你深入理解其内部机制。 首先,我们要知道什么是单向链表。单向链表是由一系列节点组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,...

    flash as3.0 实现的单向链表

    在IT领域,数据结构是编程基础中的重要组成部分,而单向链表作为基本的数据结构之一,在许多场景下都有着广泛的应用。本项目以Flash AS3.0为编程语言,实现了一个单向链表的数据结构,这对于理解和应用单向链表概念...

    C#实现单向链表C# .net 链表 单向链表

    ### C#实现单向链表 #### 一、引言 单向链表是一种常见的数据结构,在计算机科学中被广泛应用于解决各种问题。它由一系列节点组成,每个节点包含一个数据元素以及指向下一个节点的引用。本文将详细介绍如何在C#中...

    LinkedBlockingQueue + 单向链表基本结构

    文件中的类可能定义了一个简单的单向链表节点,包括节点的数据成员(如数据item和指向下一个节点的引用next)以及可能的辅助方法,例如插入新节点、删除节点或者遍历链表等。这些方法需要正确处理并发访问,以确保...

    单向链表的操作____

    单向链表是一种基本的数据结构,它在计算机科学和编程中有着广泛的应用。与数组不同,链表中的元素不是在内存中连续存储的,而是通过指针连接起来。每个链表节点包含两部分:数据域,用于存储实际的元素值;指针域,...

    有关单向链表的增删改查

    单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的引用。在计算机科学中,理解和操作链表是至关重要的技能,特别是在算法和数据结构的学习中。本主题将深入探讨单向链表的增、...

    单向链表的功能

    单向链表是一种基本的数据结构,它在计算机科学和编程中扮演着...理解和熟练掌握单向链表的操作对于编程学习至关重要,特别是在处理动态数据结构和优化算法效率时。通过实践和练习,初学者可以逐渐掌握这些功能的实现。

    c++单向链表

    在C++编程中,单向链表是一种基本的数据结构,用于组织数据,它与数组不同,因为链表的元素在内存中不一定连续存放。每个链表节点包含两部分:数据域,存储实际的数据;指针域,存储指向下一个节点的地址。在C++中...

    单向链表实现的叫号程序

    单向链表是一种常见的数据结构,它在计算机科学中被广泛应用,特别是在算法和程序设计中。在这个名为"单向链表实现的叫号程序"的案例中,我们可以通过分析`CallNum.java`文件来理解如何利用单向链表来实现一个简单的...

    一次遍历查找单向链表的中间结点

    给定一个单向链表,找到链表的中间结点可以在一次遍历中完成,这对于优化时间复杂度至关重要。在描述中提到的"经典C算法",指的是使用快慢指针(或称为龟兔赛跑法)来解决这个问题。 快慢指针的方法如下: 1. 初始...

    Intel的单向链表与双向链表,C语言源码

    在Intel的实现中,单向链表和双向链表被广泛应用于内存管理、数据结构优化和其他系统级任务。这两种链表的主要区别在于节点之间的链接方式,这直接影响了它们的操作效率和用途。 **单向链表** 是一种线性数据结构,...

    数据结构:单向循环链表源码

    与普通单向链表不同,循环链表的最后一个节点的指针不是空的,而是指向链表的第一个节点,形成一个闭合的环。这种设计使得遍历链表更为方便,因为没有明显的"结束"标志。 **单向循环链表特性** 1. **无头结点**:与...

    两列单向链表相同值查询设计

    通过上述分析,我们可以了解到构建两个单向链表并实现基于值的查询功能的基本方法。需要注意的是,在实际编写代码时,还需要注意数据类型的正确使用和异常处理逻辑的设计。此外,优化代码结构和提高可读性也是非常...

    用C++实现单向链表

    本篇文章将详细讲解如何使用C++来实现一个单向链表,以及相关的概念和操作。 单向链表是由一系列节点构成的,每个节点包含两个部分:数据元素(data)和指向下一个节点的指针(next)。由于链表中的节点不需要连续...

    自己练习单向链表

    单向链表是一种基础且重要的数据结构,在计算机科学与编程中有着广泛的应用。它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。在本练习中,我们关注的是实现单向链表的几个核心功能,这...

    如何实现一个高效的单向链表逆序输出.docx

    单向链表是一种常见的数据结构,它由一系列节点组成,...总之,实现单向链表的逆序输出可以采用迭代或递归的方法,根据具体场景选择合适的方式。在实际操作中,应关注代码的效率和健壮性,确保能正确处理各种边界情况。

    链表倒序__实现单向链表倒序

    单向链表是最简单的链表类型,其特点是每个节点只能向前遍历,不能向后。在某些情况下,我们需要对链表进行倒序操作,即将链表的顺序反转,例如将A-&gt;B-&gt;C转换为C-&gt;B-&gt;A。这个过程是Intel面试中常见的一个问题,旨在...

    单向链表操作详解(二)

    “单向链表操作详解(二)”这篇文档可能还涵盖了特殊情况的处理,例如空链表操作、错误处理以及优化链表操作的技巧等。通过详尽的实例和解释,读者可以深入理解单链表的工作原理,并学会在实际编程中灵活运用。阅读...

    博文C++数据结构X篇-04-单向链表框架搭建、实现和测试(链表的定义,常用操作的实现等)的配套资源

    本文将详细讲解单向链表的概念、框架搭建、实现以及测试,帮助你深入理解这一主题。 首先,我们要理解什么是单向链表。单向链表是一种线性数据结构,它的每个元素(称为节点)包含两部分:数据域和指针域。数据域...

Global site tag (gtag.js) - Google Analytics