`
文昌平蓝杰
  • 浏览: 56167 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

简单链表

阅读更多

 

链表总结

 

概念:

  1.链表是一种物理存储单元上非连续,非顺序的储存结构。它有多个结点组成,一个结点包括存储数据的数据区域和指向下一个结点的指针域。

  2.链表一般会有普通链表,循环链表,双向链表的分类。

 

构建结点:

 

public class Node {
	//要存储的数据
	private Object data;
	//节点的孩子节点
	private Node child;
}
 

 

  这样即构建好了一个结点,date为任意类型的数据,child即为指向下一个结点的指针,当然,数据类型也可以写多个,可以一个结点储存多个信息。

  之后写入获取和设置函数,方便改变和得到结点的内容

 

建造链表

  链表是一个灵活的容器,可以储存任意类型的数据,并且因为数据物理内储存不连续,所以对于删除和插入操作比较容易。

 

  public class LinkTest {
	private Node root=null;  //根节点
	private Node end=null;	//尾结点
	private int length=0; 	//长度
}
 

 

  这样创造一个空链表,对于链表,应该具有基本的添加函数,删除函数,获取函数。

//添加结点
	public void add(Node node) {
		//如果链表为空
		if(null==root){
			root = node;
			end = node;
		}
		else {//如果不为空
			node.setChild(null);
			end.setChild(node);
			node.setParent(end);
			end = node;
		}
		this.length++;
	}
	//获取结点数据
	public Object getNodeData(int index){
		//设计指针 并指向头结点
		Node temp = new Node("指针");
		temp = root;
		//根据索引找到药修改的位置
		for(int i=0;i<index;i++){
			temp = temp.getChild();
		}
		return temp.getData();
	}
	//移除一个结点
	public void remove(int index){
		if(index<0||index>length){
			return ;
		}
		Node temp = new Node("指针");
		temp =root;
		//利用循环找到要删除的节点索引位置
		for(int i=0;i<index-1;i++){
			temp = temp.getChild();
		}
		//删除该结点
		temp.setChild(temp.getChild().getChild());
		//防止尾结点被删除儿导致的 空指针
		if(null!=temp.getChild())
		temp.getChild().setParent(temp);
		//移除后队列长度减一
		this.length--;
	}
 

  其实除了这些操作外,还可以自己随意定义很多操作,所以链表是一个很灵活的容器,实现自定义队列等等操作。

 

  值得注意的是:在对结点之间经行关系的建立时,一定不要使链表某一部分先断掉,否则那一部分将会消失。如在经行添加操作时,必须先建立“添加结点”与后一个结点的关系,在将前一个结点与“添加结点”建立关系。如果反着来,则会使后面的结点与之前的结点失去联系,从而断掉,public void add(Node node,int i){

//如果链表为空
		if(null==root){
			root = node;
			end = node;
		}
		else{
			//建立指针,为了不使头结点断掉,新建指针代替头结点去寻找位置
			Node temp = new Node("指针");
			temp = root;
			//找到要出入的位置
			for(int j=0;j<i;j++){
				temp = temp.getChild();
			}
			node.setChild(temp.getChild());
			temp.setChild(node);
		}
	}
 

其中node.setChild(temp.getChild());

temp.setChild(node);不能调换位置。

 

分享到:
评论

相关推荐

    基于C的简单链表合并2排序程序

    在这个“基于C的简单链表合并2排序程序”中,我们需要处理两个已经排序的链表,a和b,每个链表的节点包含学号(假设为整型)和成绩(也假设为整型)。目标是将这两个链表合并成一个新的链表,并按照学号的升序排列。...

    C++实现的一个简单链表

    本项目“C++实现的一个简单链表”聚焦于使用C++语言来创建和操作单链表。下面我们将深入探讨单链表的概念、C++中的实现方式以及其在实际编程中的应用。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两...

    使用C语言实现简单链表.docx

    下面是使用C语言实现简单链表的知识点: 一、链表的定义 链表是一种动态的数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表的优点是可以动态地增加或删除节点,且可以实现插入、删除和...

    简单链表类

    简单链表类通常是指一个用编程语言实现的链表数据结构,用于存储和操作一系列元素。在这个场景中,"简单链表类"源代码可能是作者为了学习和实践数据结构知识而编写的。 链表不同于数组,它不连续存储数据。每个链表...

    C简单链表及其应用PPT学习教案.pptx

    在本篇PPT学习教案中,我们主要关注的是简单链表(Singly Linked List)的概念、特点以及如何在C++中操作链表。 简单链表是一种线性数据结构,它的每个元素称为结点或表项,由两部分构成:存储数据元素的部分(如...

    c语言简单链表操作.pdf

    根据给定文件信息,这份文档名为“c语言简单链表操作.pdf”,其描述中表明文档涉及了链表操作,特别是与C语言相关的实现。同时,文档的标签为“技术及资料”,这提示了文档内容的专业性和技术性。文档的预览部分包含...

    delphi 实现简单链表和分词

    本项目“Delphi实现简单链表和分词”就是一个结合了这两种基础知识的应用实例,主要用于理解和实践如何在Delphi环境下构建链表以及进行简单的汉语分词。 首先,让我们详细讨论链表。链表是一种线性数据结构,它的...

    C简单链表及其应用PPT课件.pptx

    根据提供的文件信息,我们可以归纳出以下关于C简单链表及其应用的重要知识点: ### 一、链表的基本概念 #### 1.1 链表的特点 - **链表**是一种线性数据结构,其中的数据元素不是按照逻辑顺序存储在连续的物理位置...

    c语言简单链表

    c语言简单链表

    类实现一简单链表 用类的形式以及链表 结点

    本节我们将深入探讨如何使用类来实现一个简单的链表,特别是针对整型数据(int型)。 首先,我们需要定义链表的节点类。节点类通常包含两个部分:数据域(data)用于存储数据,以及指针域(next)指向下一个节点。...

    简单链表的C语言实现

    本项目是关于在C语言中实现一个简单的链表,让我们深入探讨这个主题。 首先,`list.h` 文件通常包含链表操作的声明,也就是函数原型。在这个链表实现中,可能包括创建新节点、插入节点、删除节点、打印链表以及搜索...

    简单链表操作

    这个"简单链表操作"项目提供了一个C语言实现的链表,用于学习链表的基本操作,包括增、删、改、查。 首先,链表的核心是节点(Node)结构。一个节点通常包含两部分:数据域(Data)和指针域(Next)。数据域存储...

    简单链表11

    简单链表是一种常用的数据结构,尤其在实现动态数据集合时。在这个主题中,我们将深入理解“简单链表11”,探讨其核心概念,以及如何在VC++6.0环境下进行操作,如尾部插入和头部删除。 简单链表是由一系列节点构成...

    C#实现的简单链表类实例

    总结来说,这个C#实现的简单链表类`MyLinkedList`通过`Node`类模拟链式存储,并提供了基本的增删操作。虽然它只覆盖了链表操作的基础部分,但它展示了C#如何使用对象和引用来构建和管理链表数据结构。对于理解和实践...

    简单链表的插入,搜索,删除操作

    对简单链表的插入操作,搜索操作,删除操作

    利用链表操作成员函数insertlist,deletelist.outputlist,形成以下的简单链表操作程序。

    利用链表操作成员函数insertlist,deletelist.outputlist,形成以下的简单链表操作程序。

    链表 简单 链表 操作

    链表是一种基础且重要的数据结构,它在计算机科学中扮演着关键角色,特别是在处理动态数据集合时。链表与数组不同,它不依赖于物理存储位置的连续性,而是通过节点之间的引用(或指针)来连接数据。在这个主题中,...

    简单链表创建,插入,输出

    在这个例子中,我们看到一个简单的链表操作,包括创建、插入和输出链表的实现,使用C语言编写。 首先,我们定义了一个名为`student`的结构体,它包含了以下字段: 1. `__int64 num`: 学生的编号,使用64位整型。 2....

    简单链表及其应用

    此ppt介绍了链表是如何编写的,并以几个实例启发入门级学者使用链表的灵感,值得一看

Global site tag (gtag.js) - Google Analytics