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

算法学习(七)--链表之单链表

阅读更多
package com.tw.dst.link;

/**
 * <p>链表类</p>
 * @author tangw
 *
 */
public class Link {
	public int iData;
	public double dData;
	public Link next;
	
	public Link(int idata,double ddata){
		this.iData = idata;
		this.dData = ddata;
	}
	
	public void displayLink(){
		System.out.println(" idata="+iData+"  ddata:"+dData);
	}

}

 

package com.tw.dst.link;


/**
 * <p>单链表</p>
 * @author tangw 2010-11-29
 *
 */
public class LinkList {
	
	private Link first;//第一个链结点的引用

	public LinkList() {
		first = null;//引用类型初始化会自动赋值为null,此处不是必须的
	}
	//判断是否为空
	public boolean isEmpty(){
		return (first == null);
	}
	//插入数据
	public void insertFirst(int id,double dd){
		Link link = new Link(id,dd);
		link.next = first;
		first = link;
	}
	
	//删除数据
	public Link deleteFirst(){
		Link temp = first;
		first = first.next;
		return temp;	
	}
	//查找指定节点
	public Link find(int key){
		Link current = first;
		while( current.iData!=key ){
			if( current.next == null){
				return null;
			}else{
				current = current.next;//将当前对象的下一个引用置为当前
			}
		}
		return current;
	}
	
	//删除指定节点
	public Link delete(int key){
		Link current = first;	//存储当前对象
		Link previous = first;	//存储先前对象
		while(current.iData !=key ){
			if(current.next ==null){
				return null;
			}else{
				previous = current;
				current = current.next;
			}
		}
		if( current == first){
			first = first.next;
		}else{
			previous.next = current.next;
		}
		return current;
	}
	
	
	
	
	
	//输出链表数据
	public void displayList(){
		System.out.println("list (first-->last)");
		Link current = first;
		while(current!=null){
			current.displayLink();
			current =current.next;
		}
		System.out.println("");
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//----1---插入
		LinkList linkList = new LinkList();
		linkList.insertFirst(22, 2.99);
		linkList.insertFirst(44, 4.99);
		linkList.insertFirst(66, 6.99);
		
		linkList.displayList();
		//---2--删除
		/*while(!linkList.isEmpty()){
			Link aLink = linkList.deleteFirst();
			System.out.println("--deleted");
			aLink.displayLink();
		}
		
		linkList.displayList();*/
		
		//==3 查找=====
		Link link = linkList.find(44);
		if(null !=link){
			System.out.println("---idata:"+link.dData);
		}else{
			System.out.println("-find---no ");
		}
		
		//---4: 删除指定元素
		Link delLink = linkList.delete(44);
		if( null != delLink){
			System.out.println("----del link:"+delLink.dData);
		}else{
			System.out.println("-delete---no ");
		}
		linkList.displayList();
	}

}

 

分享到:
评论

相关推荐

    循环单链表-双链表_循环单链表-双链表_throat6v2_

    总的来说,循环单链表和双链表都是处理动态数据序列的有效工具,它们在算法设计和数据结构实现中有着广泛的应用,例如在队列、栈、图等数据结构以及各种搜索和排序算法中。理解并熟练运用这些基本数据结构是成为优秀...

    算法-数据结构和算法-8-双向链表.rar

    在计算机科学领域,数据结构和算法是至关重要的基础,它们直接影响到程序的效率和性能。本资源"算法-数据结构和算法-8-双向...通过深入学习"数据结构和算法-8-双向链表.pdf",可以深化对这些概念的理解,提高编程能力。

    c++算法集-排序-链表-图-队列-二叉树实现

    这个压缩包中的C++实现代码可以帮助学习者深入理解这些算法和数据结构的实际应用。通过阅读和运行这些代码,不仅可以巩固理论知识,还能提升编程能力。在实际项目中,熟练掌握这些基础知识能够提高代码质量和解决...

    数据结构与算法实验2--单链表.docx

    ### 数据结构与算法实验2——单链表 #### 实验背景与目的 本实验旨在通过实践操作加深学生对单链表这一线性表链式存储结构的理解与掌握。实验不仅要求参与者熟悉单链表的基本概念及其C语言实现,还需要能够灵活...

    单链表 双链表 循环链表 源代码

    总的来说,单链表、双链表和循环链表是数据结构中的基础概念,理解和熟练掌握它们的原理和实现方法,对于学习更复杂的数据结构和算法,如树、图等,都有着重要的铺垫作用。在实际编程中,根据需求选择合适的数据结构...

    C语言开发----链表HuffmanTree.rar

    本压缩包“C语言开发----链表HuffmanTree.rar”显然聚焦于使用C语言实现数据结构中的一个重要概念——链表,以及与之结合的哈夫曼树(Huffman Tree),这是一种用于数据压缩的有效算法。 首先,我们来详细了解一下...

    数据结构--单链表操作--实验报告.doc

    数据结构中的单链表是一种线性数据结构,由一系列节点(也称为元素或记录)...通过这个实验,学生不仅能够熟悉Visual C++的编程环境,还能深入理解单链表数据结构及其操作,为后续更复杂的数据结构和算法学习打下基础。

    【数据结构算法】--单链表的相关程序实现

    在学习和使用这些文件时,你需要理解链表的基本概念,如何动态分配内存,如何通过指针操作节点,以及如何编写和执行测试用例。这不仅加深了对单链表的理解,同时也强化了C语言的实践能力。此外,你还可以扩展这些...

    c语言数据结构单链表的算法

    本节将深入探讨单链表的算法,包括其定义、基本操作以及在实际问题中的应用。 单链表是由一系列节点组成的数据结构,每个节点包含两部分:数据域和指针域。数据域用于存储实际的数据,而指针域则保存下一个节点的...

    算法大全-面试题-链表-栈-二叉树-数据结构

    单链表是算法和数据结构学习的基础之一,并且是面试时常见的考察对象。 ### 1. 单链表反转 单链表反转是一种常见的操作,通常有两种方法:迭代和递归。 #### 迭代方法 迭代方法较为直观,它通过几个指针的移动来...

    Java算法实例-单链表操作

    在学习和实践中,可以使用这些基本操作来解决更复杂的算法问题,例如反转链表、合并两个排序的链表、查找链表的中间节点等。对于"郑俊杰_实验一"这样的实验项目,学生可以通过编写和测试这些操作来加深对链表和Java...

    C语言 顺序链表 单链表 双链表 栈等程序

    总的来说,这个压缩包提供了一个实践C语言数据结构学习的平台,通过编写和运行这些程序,可以加深对顺序链表、单链表、双链表以及栈的理解,提升编程技能。对于初学者来说,这是一个很好的练习机会,对于经验丰富的...

    算法-理论基础- 线性表- 单链表(包含源程序).rar

    单链表作为线性表的实现之一,通过节点间的指针连接形成一个链式结构。每个节点包含两部分:数据域和指针域。数据域用于存储数据,而指针域则保存指向下一个节点的引用。链表的第一个节点称为头节点,最后一个节点的...

    线性表的链式实现-----单链表

    总的来说,"线性表的链式实现-----单链表"这个主题涵盖了数据结构中的基础概念和C语言的指针操作,是学习数据结构和算法的重要部分。通过`LinkList.h`和`LinkList.c`的代码,可以深入理解单链表的创建、操作和销毁...

    数据结构---线性表之单链表(C语言)

    单链表是数据结构中的一种基础类型,尤其在C语言编程中经常被使用。它是一种线性的、非连续的数据组织形式,每...通过C语言实现,我们可以直观地理解链表的工作原理,这对于进一步学习高级数据结构和算法具有重要意义。

    单链表-C++数据结构之单链表实现.zip

    单链表常用于实现队列、栈、表达式解析、图形算法等多种数据结构和算法中。 总结,C++中的单链表实现涉及到对链表节点的理解、链表操作的实现以及性能优化的考虑。通过学习单链表,开发者能够更好地掌握动态数据...

    数据结构学习--线性表及其应用--链表

    通过这些基本操作的实践,学生可以深入理解链表的工作原理和操作方式,这不仅有助于掌握链表的实现,还能为后续学习如栈、队列、树等更复杂的数据结构奠定基础。此外,了解链表的优缺点有助于在实际问题中选择合适的...

    算法-数据结构之链表合并算法.rar

    总的来说,"数据结构之链表合并算法.pdf"这份文档可能详细介绍了链表合并算法的原理、实现方法、性能分析和应用案例,为学习者提供了一套全面的教程。通过深入学习,可以增强对数据结构的理解,提高解决实际问题的...

    Java算法篇-单链表反转详解.pptx.pptx

    总结来说,单链表反转是数据结构与算法学习中的一个重要课题,它考察了对链表操作的理解和掌握,包括节点的创建、遍历、修改指针以及整体链表结构的变换。熟练掌握这一算法,不仅可以提升编程能力,也有助于解决实际...

Global site tag (gtag.js) - Google Analytics