`
z2367570158
  • 浏览: 6785 次
社区版块
存档分类
最新评论

数据结构之链表

阅读更多

 

 public class LinkNode<E>{
	
	public E data;
	public LinkNode<E> next;


}

 

public class LinkList<E> {

	LinkNode<E> head;
	LinkNode<E> last;
	private int length;
	
	public void add(E obj){
		//新建一个节点对象
				LinkNode<E> node = new LinkNode<E>();
				//把要添加的数据挂在节点上
				node.data = obj;
				
				if(head == null){
					head = node;
					last = node;
				} else {
					//把新节点放在最后
					last.next = node;
					//把最后的节点指向新节点
					last = node;
				}
				length++;
	}
	
	public E get(int index){
		//判断是否超出范围
		if(index < 0 || index >= length){
			throw new java.lang.ArrayIndexOutOfBoundsException("超出范围");
		}
		//找到index位置的节点
		LinkNode<E> temp = head;
		for(int i=0; i<index;i++){
			temp = temp.next;
		}
		
		return temp.data;
	}

	
	
	public E remove(int index){
		//判断是否超出范围
		if(index < 0 || index >= length){
			throw new java.lang.ArrayIndexOutOfBoundsException("超出范围");
		}
		
		if(index == 0){
			length--;
			E data = head.data;
			head = head.next;
			return data;
		}
		
			
		//找到index位置的节点
		LinkNode<E> temp = head;
		//index对应节点的父节点
		LinkNode<E> prev = head;
		for(int i=0; i<index;i++){
			prev = temp;
			temp = temp.next;
		}
		prev.next = temp.next;
		
		if(index == length - 1){
			last = prev;
			System.out.println("last="+last.data);
		}
		length--;
		return temp.data;
	}
	
	
	public int size(){
		return length;
	}

}

 

链表公共单位   链结点代码

      

数组作为数据存储结构
无序数组中搜索是低效的   而在有序数组中是  插入又是低效的   而且在数组创建后它的大小就是不可改变的了

而运用链表  除非需要频繁通过下标随机访问各个数据  否则在很多使用数组的地方都可以用链表代替



如果要打比方的话

数组存储就好比  Bob住在贝克街16号  你只要在贝克街一路找下去就能找到


而链表则好比  Harry可能知道Bob在哪  Harry说他不知道但Jane 可能知道  Jane说她看到Bob和Peter一起出去了你打Peter的手机Peter说Bob和…….
链表内你无法通过直接地址访问数据项  必须使用数据的关系来定位它

 

单向链表


在链表中 每个数据项都被包含在“链结点”中  每个链结点都包含数据项和对下一个链结点的引用

包含一般数据结构的功能  增删查改

 

更多的链表结构还有双端链表  双向链表  有序链表  等等等等  待我之后慢慢写

  • 大小: 10.3 KB
0
0
分享到:
评论

相关推荐

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

    本资料“算法-数据结构之链表合并算法.rar”包含的“数据结构之链表合并算法.pdf”应该详细探讨了这个主题。 首先,链表的基本概念是必不可少的。链表由一系列节点构成,每个节点包含数据元素和指向下一个节点的...

    数据结构-使用javascript讲解数据结构之链表.zip

    本资料包“数据结构-使用javascript讲解数据结构之链表.zip”将深入探讨链表的概念、实现以及其在JavaScript中的应用。 链表不同于数组,数组是连续的内存空间,而链表的元素在内存中是非连续存储的。每个元素称为...

    C语言中数据结构之链表归并排序实例代码

    C语言中数据结构之链表归并排序实例代码 问题  设有两个无头结点的单链表,头指针分别为ha,hb,链中有数据域data,链域next,两链表的数据都按递增排序存放,现要求将hb表归到ha表中,且归并后ha仍递增序,归并中...

    数据结构之链表,C#链表;数据结构之链表,C#链表

    链表是一种重要的数据结构,它在计算机科学中扮演着至关重要的角色,特别是在处理动态数据集合时。相较于数组,链表不需预先分配连续的内存空间,因此在插入和删除操作上具有更高的灵活性。本主题主要关注C#语言中的...

    数据结构之链表的实现

    线性表的存储结构使用链表。 2、提供操作:自表首插入元素、删除指定元素、搜索表中是否有指定元素、输出链表。 3、接收键盘录入的一系列整数(例10,25,8,33,60)作为节点的元素值,创建链表。输出链表内容。 4、输入...

    数据结构之链表的全部代码

    链表是一种基础且重要的数据结构,它在计算机科学中扮演着关键角色,特别是在处理动态数据集合时。相较于数组,链表允许更灵活的内存管理,因为它不需要预先分配连续的存储空间。下面,我们将深入探讨链表的概念、...

    链表-数据结构之链表(Python语言描述)链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点

    链表----数据结构之链表(Python语言描述) 链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。相比于数组,链表具有更灵活的插入和删除操作,但访问元素的效率较低。在...

    01基础数据结构之链表

    链表数据结构知识点 链表是一种基本的数据结构,它是一种非顺序存储结构,通过指针将各个节点连接起来,每个节点都包含了数据和指向下一个节点的指针。链表的优点是可以动态地增减节点,插入和删除节点的时间复杂度...

    C通用范例源代码之数据结构之链表.pdf

    在C语言中,链表是一种基础且重要的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。上述文件中包含了几个关于链表操作的C语言源代码范例,主要涉及链表的创建、遍历以及按序号查找节点。 ...

    数据结构之链表栈与队列

    链表、栈和队列是计算机科学中基础且重要的数据结构,它们在程序设计和算法实现中发挥着关键作用。本文将深入探讨这些概念,并结合实际应用进行解析。 首先,我们要理解链表的基本原理。链表不同于数组,它不是连续...

    数据结构-链表 数据结构 链表

    ### 数据结构之链表详解 #### 一、链表基本概念 **链表**是一种常见的数据结构,它通过一组地址不连续的存储单元来存储线性表中的各个数据元素。链表中的每个元素称为**结点**,这些结点不仅包含实际的数据信息,...

    Python数据结构之链表实现

    1.使用Python语言实现链表数据结构 2.基于类封装思想 3.实现链表增删改查功能 4.有测试数据

    数据结构顺序链表的实现

    数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现

    数据结构之链表--一元多项式的计算

    在IT领域,数据结构是计算机科学中的核心概念之一,它涉及到如何有效地组织和管理大量数据。链表作为基本的数据结构类型,广泛应用于各种算法和程序设计中。本话题聚焦于链表的应用,具体来说,是利用链表实现一元...

    数据结构 三叉链表表示的二叉树

    本文将深入探讨一种特殊的数据结构表示——三叉链表表示的二叉树。这种表示方式在C++语言中尤为常见,它允许我们高效地创建、插入、删除节点以及进行循环算法遍历二叉树。 首先,我们要理解什么是二叉树。二叉树是...

    数据结构C++链表

    在C++中,链表是一种常见的数据结构,它不同于数组,不需要连续的内存空间来存储元素。本项目专注于C++实现的单链表,提供了一个完整的可运行示例,包括`main.cpp`主程序,以及`linklist.h`和`node.h`两个头文件,...

    数据结构之链表源码-思路清晰纯C

    单链表 单循环链表 双链表 双循环链表 内容学习于 https://www.bilibili.com/video/BV1W64y1z7jh?p=19&spm_id_from=pageDriver&vd_source=4d33bf4ac4499f2c0370694554a02fa5

Global site tag (gtag.js) - Google Analytics