链表总结
概念:
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排序程序”中,我们需要处理两个已经排序的链表,a和b,每个链表的节点包含学号(假设为整型)和成绩(也假设为整型)。目标是将这两个链表合并成一个新的链表,并按照学号的升序排列。...
本项目“C++实现的一个简单链表”聚焦于使用C++语言来创建和操作单链表。下面我们将深入探讨单链表的概念、C++中的实现方式以及其在实际编程中的应用。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两...
下面是使用C语言实现简单链表的知识点: 一、链表的定义 链表是一种动态的数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表的优点是可以动态地增加或删除节点,且可以实现插入、删除和...
简单链表类通常是指一个用编程语言实现的链表数据结构,用于存储和操作一系列元素。在这个场景中,"简单链表类"源代码可能是作者为了学习和实践数据结构知识而编写的。 链表不同于数组,它不连续存储数据。每个链表...
在本篇PPT学习教案中,我们主要关注的是简单链表(Singly Linked List)的概念、特点以及如何在C++中操作链表。 简单链表是一种线性数据结构,它的每个元素称为结点或表项,由两部分构成:存储数据元素的部分(如...
根据给定文件信息,这份文档名为“c语言简单链表操作.pdf”,其描述中表明文档涉及了链表操作,特别是与C语言相关的实现。同时,文档的标签为“技术及资料”,这提示了文档内容的专业性和技术性。文档的预览部分包含...
本项目“Delphi实现简单链表和分词”就是一个结合了这两种基础知识的应用实例,主要用于理解和实践如何在Delphi环境下构建链表以及进行简单的汉语分词。 首先,让我们详细讨论链表。链表是一种线性数据结构,它的...
根据提供的文件信息,我们可以归纳出以下关于C简单链表及其应用的重要知识点: ### 一、链表的基本概念 #### 1.1 链表的特点 - **链表**是一种线性数据结构,其中的数据元素不是按照逻辑顺序存储在连续的物理位置...
c语言简单链表
本节我们将深入探讨如何使用类来实现一个简单的链表,特别是针对整型数据(int型)。 首先,我们需要定义链表的节点类。节点类通常包含两个部分:数据域(data)用于存储数据,以及指针域(next)指向下一个节点。...
本项目是关于在C语言中实现一个简单的链表,让我们深入探讨这个主题。 首先,`list.h` 文件通常包含链表操作的声明,也就是函数原型。在这个链表实现中,可能包括创建新节点、插入节点、删除节点、打印链表以及搜索...
这个"简单链表操作"项目提供了一个C语言实现的链表,用于学习链表的基本操作,包括增、删、改、查。 首先,链表的核心是节点(Node)结构。一个节点通常包含两部分:数据域(Data)和指针域(Next)。数据域存储...
简单链表是一种常用的数据结构,尤其在实现动态数据集合时。在这个主题中,我们将深入理解“简单链表11”,探讨其核心概念,以及如何在VC++6.0环境下进行操作,如尾部插入和头部删除。 简单链表是由一系列节点构成...
总结来说,这个C#实现的简单链表类`MyLinkedList`通过`Node`类模拟链式存储,并提供了基本的增删操作。虽然它只覆盖了链表操作的基础部分,但它展示了C#如何使用对象和引用来构建和管理链表数据结构。对于理解和实践...
对简单链表的插入操作,搜索操作,删除操作
利用链表操作成员函数insertlist,deletelist.outputlist,形成以下的简单链表操作程序。
链表是一种基础且重要的数据结构,它在计算机科学中扮演着关键角色,特别是在处理动态数据集合时。链表与数组不同,它不依赖于物理存储位置的连续性,而是通过节点之间的引用(或指针)来连接数据。在这个主题中,...
在这个例子中,我们看到一个简单的链表操作,包括创建、插入和输出链表的实现,使用C语言编写。 首先,我们定义了一个名为`student`的结构体,它包含了以下字段: 1. `__int64 num`: 学生的编号,使用64位整型。 2....
此ppt介绍了链表是如何编写的,并以几个实例启发入门级学者使用链表的灵感,值得一看