public class Linknode{ private Linknode parent;//父节点 private Linknode child;//子节点 private Object obj;//节点中的内容 //构造节点方法,内容为obj public Linknode(Object obj){ this.obj=obj; } //给节点加子节点 public void setchild(Linknode child){ this.child=child; } //得到子节点 public Linknode getchild(){ return child; } //给节点加父节点 public void setparent(Linknode parent){ this.parent=parent; } //得到父节点 public Linknode getparent(){ return parent; } //给节点设定内容 public void setObjest(Object obj){ this.obj=obj; } //获取节点内容 public Object getObject(){ return obj; } }
public class Linklist { private Linknode first;//首节点 private Linknode last;//尾节点 private int length;//链表长度 public static void main(String[] args) { // TODO Auto-generated method stub //新建链表对象 Linklist list =new Linklist(); //循环创建多个节点对象,依次加入链表中 for(int i=0;i<10;i++){ Linknode node=new Linknode("节点"+i); list.add(node); } list.remove(9);//移除索引位置的节点 //再给链表加入一个节点,然后打印链表 Linknode node=new Linknode("add"); list.add(8,node); list.print(); } //给链表尾加一个节点 public void add(Linknode node){ if (length==0){ first=node; last=node; } else{ last.setchild(node); node.setparent(last); last=node; } //链表添加节点后,要把长度加一 length++; } //链表大小 public int size(){ return length; } //得到索引位置节点 public Linknode get(int index){ if(index>=length||index<0){ //超出范围时,抛出错误 throw new java.lang.Error("超出范围"); } Linknode temp=first; for(int i=0;i<index;i++){ temp=temp.getchild(); } //System.out.println("得到第"+index+"个节点"+temp.getObject()); return temp; } //移除某个节点 public void remove(int index){ if(index>=length||index<0){ throw new java.lang.Error("超出范围"); } //得到索引位置节点 Linknode temp= this.get(index); if(temp.getparent()==null){ first=temp.getchild(); last=last.getparent(); } else{ if(temp.getchild()==null){ last=last.getparent(); } else{ temp.getparent().setchild(temp.getchild()); temp.getchild().setparent(temp.getparent()); last=last.getparent(); } } length--; } //在某个位置插入一节点 public void add(int index,Linknode node){ if(index>=length||index<0){ throw new java.lang.Error("超出范围"); } //得到索引位置节点 Linknode temp= this.get(index); if(temp.getparent()==null){//如果插入位置在首位置 //Linknode temp_first=first; first=node; node.setchild(temp); temp.setparent(node); } else{ //如果插入位置不在第一个 temp.getparent().setchild(node); node.setparent(temp.getparent()); temp.setparent(node); node.setchild(temp); } length++; } //打印内容 public void print(){ for(int i=0;i<length;i++){ System.out.println(this.get(i).getObject()); } } }
您还没有登录,请您登录后再发表评论
Java中的线性表是数据结构的一种基本形式,主要包括顺序表和链表两种主要类型。 顺序表是一种物理存储单元上顺序存放的线性表,其特点是元素之间的逻辑顺序与物理顺序一致。在Java中,`java.util.ArrayList`是顺序...
最后,虚拟内存IV:动态内存分配-高级概念还讨论了LIFO策略的回收策略和显式链表小结。LIFO策略的回收策略是将新释放的块放置在链表的开始处。显式链表小结则是与隐式链表相比较,显式链表需要存储前/后指针,而隐式...
Java链表是编程中一种基础且重要的数据结构,它在许多场景下有着广泛的应用。本文将结合个人学习心得,深入探讨Java链表的核心概念、实现方式以及与其他编程语言的互通性。 首先,链表是一种线性数据结构,与数组...
"C语言链表数组" 在学习编程语言时,大家常常遇到数组和链表这两种数据结构。今天,我们将深入探讨C语言中链表数组的实现和数组与链表结构的对比,并结合个人理解和实践经验来分析它们的优缺。 一、链表数组的实现...
解决这个问题的关键在于比较两个链表的头节点,并将较小的节点添加到结果链表中。然后,移动指向较小节点的指针,继续比较下一个节点,直到其中一个链表为空。此时,将非空链表的所有剩余节点添加到结果链表中。 ...
#### 小结 本文档介绍了双向链表的实现方法及其基本操作的C语言实现。双向链表相比于单链表具有更高的灵活性和效率,尤其是在需要频繁地从前向后或从后向前遍历链表的情况下。通过这些基本操作,可以实现对双向链表...
Linux内核通用链表是操作系统内核中一种高效的数据结构,用于存储和管理动态数据集。本文将深入探讨Linux内核通用链表的原理、结构、宏定义以及使用方法。 首先,内核提供的通用链表库是双向链表,这意味着每个链表...
大学期间用C语言链表实现的一个图书管理系统,主要功能有 a. 设备申请。由专业人员填写“申请表”送交领导批准购买。 b. 设备入库。新设备购入后要立即进行设备登记(包括类别、设备名、型号、规格、单价、数量、...
#### 小结 通过以上分析,我们可以看到使用链表实现栈的Pop和Push操作是相对直观和简单的。在实现过程中需要注意的关键点包括: 1. 确保栈顶指针始终指向最新的栈顶节点。 2. 在进行出栈操作时,正确处理空栈的情况...
主要内容包括实验目的、实验环境配置、具体实现的源代码、实验运行截图以及最后的小结。以下是针对该实验报告中的各个知识点进行的详细解析。 #### 实验目的 1. **理解链表的基本概念**:链表是一种常见的线性表...
数据结构课程设计之二叉树采用二叉链表作为存储结构 本课程设计的主要任务是设计并实现一个二叉树的存储结构,使用二叉链表作为存储结构,并实现按层次顺序遍历二叉树的算法。下面是本设计的详细解释和实现过程: ...
### 小结 本代码示例不仅涵盖了链表的基本定义与创建,还提供了更高级的操作,如集合运算等。这些操作在实际编程中非常有用,可以帮助我们更好地理解和应用链表这一数据结构。通过学习这段代码,读者可以进一步掌握...
"C语言数据结构的小结"是一个针对初学者的指南,旨在帮助他们理解并掌握C语言中的数据结构概念。数据结构是计算机科学的核心组成部分,它涉及到如何有效地组织和管理数据,以便于高效地访问和操作。 首先,我们要...
1.9 实验小结 6 2 增加站点,删除 7 2.1 需求分析 7 2.2 总体设计 7 2.3 数据结构 8 2.4 算法设计 9 2.5 系统实现 12 2.6 系统测试 12 2.7 复杂度分析 13 2.8 结果分析 13 2.9实验小结 13 3 从指定站点出发,计算出...
### 小结 通过本实验,学生不仅能够深入了解链表这一重要数据结构的特点,还能掌握如何利用 C 语言进行高效的数据处理。此外,通过实际编程操作,学生可以进一步提升自己的编程能力和解决问题的能力。这对于后续...
- 链表实现通常比列表实现占用更多的内存空间,因为链表需要额外的空间存储指针。 3. **异常处理**: - 在实现队列时,需要考虑到队列为空时的操作,避免程序崩溃或产生错误。 #### 五、总结 通过上述介绍,...
### 小结 理解并掌握双向链表的设计和实现,以及如何在实际项目中运用,对于提升编程能力尤其是处理动态数据集合的问题至关重要。双向链表的灵活性使得它在需要频繁进行插入和删除操作的场景中特别有用,而其双指针...
运用链表实现图书信息的管理,主要包含图书信息的增删改查,以及将链表中存储的图书信息保存为txt文件,属于C语言入门级练手小项目,可以作为C语言结课大作业的参考。比较适合刚学C语言编程的大学生。该源码在VS2017...
五、实践小结 通过这次设计,学生不仅巩固了C语言的基础知识,如函数、循环,还初次接触并理解了链表这一重要数据结构。同时,体验了实际编程过程中的问题解决和团队协作,认识到持续练习和调试的重要性。 六、源...
相关推荐
Java中的线性表是数据结构的一种基本形式,主要包括顺序表和链表两种主要类型。 顺序表是一种物理存储单元上顺序存放的线性表,其特点是元素之间的逻辑顺序与物理顺序一致。在Java中,`java.util.ArrayList`是顺序...
最后,虚拟内存IV:动态内存分配-高级概念还讨论了LIFO策略的回收策略和显式链表小结。LIFO策略的回收策略是将新释放的块放置在链表的开始处。显式链表小结则是与隐式链表相比较,显式链表需要存储前/后指针,而隐式...
Java链表是编程中一种基础且重要的数据结构,它在许多场景下有着广泛的应用。本文将结合个人学习心得,深入探讨Java链表的核心概念、实现方式以及与其他编程语言的互通性。 首先,链表是一种线性数据结构,与数组...
"C语言链表数组" 在学习编程语言时,大家常常遇到数组和链表这两种数据结构。今天,我们将深入探讨C语言中链表数组的实现和数组与链表结构的对比,并结合个人理解和实践经验来分析它们的优缺。 一、链表数组的实现...
解决这个问题的关键在于比较两个链表的头节点,并将较小的节点添加到结果链表中。然后,移动指向较小节点的指针,继续比较下一个节点,直到其中一个链表为空。此时,将非空链表的所有剩余节点添加到结果链表中。 ...
#### 小结 本文档介绍了双向链表的实现方法及其基本操作的C语言实现。双向链表相比于单链表具有更高的灵活性和效率,尤其是在需要频繁地从前向后或从后向前遍历链表的情况下。通过这些基本操作,可以实现对双向链表...
Linux内核通用链表是操作系统内核中一种高效的数据结构,用于存储和管理动态数据集。本文将深入探讨Linux内核通用链表的原理、结构、宏定义以及使用方法。 首先,内核提供的通用链表库是双向链表,这意味着每个链表...
大学期间用C语言链表实现的一个图书管理系统,主要功能有 a. 设备申请。由专业人员填写“申请表”送交领导批准购买。 b. 设备入库。新设备购入后要立即进行设备登记(包括类别、设备名、型号、规格、单价、数量、...
#### 小结 通过以上分析,我们可以看到使用链表实现栈的Pop和Push操作是相对直观和简单的。在实现过程中需要注意的关键点包括: 1. 确保栈顶指针始终指向最新的栈顶节点。 2. 在进行出栈操作时,正确处理空栈的情况...
主要内容包括实验目的、实验环境配置、具体实现的源代码、实验运行截图以及最后的小结。以下是针对该实验报告中的各个知识点进行的详细解析。 #### 实验目的 1. **理解链表的基本概念**:链表是一种常见的线性表...
数据结构课程设计之二叉树采用二叉链表作为存储结构 本课程设计的主要任务是设计并实现一个二叉树的存储结构,使用二叉链表作为存储结构,并实现按层次顺序遍历二叉树的算法。下面是本设计的详细解释和实现过程: ...
### 小结 本代码示例不仅涵盖了链表的基本定义与创建,还提供了更高级的操作,如集合运算等。这些操作在实际编程中非常有用,可以帮助我们更好地理解和应用链表这一数据结构。通过学习这段代码,读者可以进一步掌握...
"C语言数据结构的小结"是一个针对初学者的指南,旨在帮助他们理解并掌握C语言中的数据结构概念。数据结构是计算机科学的核心组成部分,它涉及到如何有效地组织和管理数据,以便于高效地访问和操作。 首先,我们要...
1.9 实验小结 6 2 增加站点,删除 7 2.1 需求分析 7 2.2 总体设计 7 2.3 数据结构 8 2.4 算法设计 9 2.5 系统实现 12 2.6 系统测试 12 2.7 复杂度分析 13 2.8 结果分析 13 2.9实验小结 13 3 从指定站点出发,计算出...
### 小结 通过本实验,学生不仅能够深入了解链表这一重要数据结构的特点,还能掌握如何利用 C 语言进行高效的数据处理。此外,通过实际编程操作,学生可以进一步提升自己的编程能力和解决问题的能力。这对于后续...
- 链表实现通常比列表实现占用更多的内存空间,因为链表需要额外的空间存储指针。 3. **异常处理**: - 在实现队列时,需要考虑到队列为空时的操作,避免程序崩溃或产生错误。 #### 五、总结 通过上述介绍,...
### 小结 理解并掌握双向链表的设计和实现,以及如何在实际项目中运用,对于提升编程能力尤其是处理动态数据集合的问题至关重要。双向链表的灵活性使得它在需要频繁进行插入和删除操作的场景中特别有用,而其双指针...
运用链表实现图书信息的管理,主要包含图书信息的增删改查,以及将链表中存储的图书信息保存为txt文件,属于C语言入门级练手小项目,可以作为C语言结课大作业的参考。比较适合刚学C语言编程的大学生。该源码在VS2017...
五、实践小结 通过这次设计,学生不仅巩固了C语言的基础知识,如函数、循环,还初次接触并理解了链表这一重要数据结构。同时,体验了实际编程过程中的问题解决和团队协作,认识到持续练习和调试的重要性。 六、源...