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

写链表有感

    博客分类:
  • java
 
阅读更多

        今天学习了一下链表,以前学习了数据结构,对链表就有认识,觉得链表是相当有用的,今天在蓝杰学习了感觉整个数据结构就是数据和结构,数据就不再多说,结构就是数组和链表,前几天用数组实现了队列,今天就把我实现的链表的练习发一下吧;个人感觉链表还挺有用的。

 

具体代码如下

先创建一个节点类

package com.lw20130717;

public class LinkNode {
	
	public  Object date;
	public  LinkNode next;

}

 然后是链表里的具体方法

package com.lw20130717;

public class LinkList {
	
	private LinkNode root ;
	private LinkNode last;
	
	
	//设置在链表中添加节点的方法
	
	public void add(Object obj){
		
		if(root==null){
			root = new LinkNode();
			root.date=obj;
			last = root;
		}else{
			LinkNode next = new LinkNode();
			next.date=obj;
			last.next=next;
			last = next;
		}
	}
	//检索出链表中的某个检索值的节点的
	
	public LinkNode getNode(int index){
		LinkNode tempLinkNode = new LinkNode();
		int num=0;
		tempLinkNode = root;
		while(num!=index){
			tempLinkNode = tempLinkNode.next; 
			num++;
		}
		return tempLinkNode;
	}
	
	//获取整个链表的长度
	public int size(){
		LinkNode tempLinkNode = new LinkNode();
		int num=0;
		tempLinkNode = root;
		while(tempLinkNode!=null){
			tempLinkNode = tempLinkNode.next;
			num++;
		}
		return num;
	}
	
	//在链表中的某个位置中插入一个节点
	
	public void insert(int index,Object obj){
		LinkNode tempLinkNode = new LinkNode();
		tempLinkNode.date=obj;
		int num = size();
		if(index==0){
			
			tempLinkNode.next=root;
			root = tempLinkNode;
			
		}else if(num==index){
			
			last.next = tempLinkNode;
			last = tempLinkNode;
			
		}else{
			
			LinkNode parent = getNode(index-1);
			LinkNode next = getNode(index);
			parent.next= tempLinkNode;
			tempLinkNode.next = next;	
		}
	}
	
	//在链表中的某个位置移除一个节点
	public void remove(int index){
		
		int num = size();
		if(index==0){
			
			root = root.next ;
			
		}else if(index==(num-1)){
			
//			LinkNode parent = getNode(index-1);
//			last = parent;
			LinkNode next =  getNode(index-1);
			next.next=null;
			
			
		}else{
			
			LinkNode parent = getNode(index-1);
			LinkNode next = getNode(index+1);
			parent.next = next;
			
		}
		if(index<0||index>(num-1)){
			
			System.out.println("索引值超出范围");
			
		}

	}

}

 

左后就是测试类,可以自己随便写

package com.lw20130717;
/**
 * 定义程序主入口类
 * @author 李伟 20130717
 *
 */

public class Manager {
	public static void main(String[]args){
		
		LinkList list = new LinkList();
		
		for(int i=0;i<10;i++){
			
			list.add("学生"+i);
			
		}
		list.insert(1, "哈哈");
		list.remove(10);
		System.out.println("总共有"+list.size());
		for(int i=0;i<10;i++){
			System.out.println(list.getNode(i).date);
		}

	}
	


}

 

 

分享到:
评论

相关推荐

    链表源码,练习文件

    链表是一种基础且重要的数据结构,它在计算机科学和编程中扮演着不可或缺的角色。相比于数组,链表在存储和...通过实际操作,你可以更直观地感受链表的灵活性和效率,为以后处理更复杂的数据结构和算法打下坚实的基础。

    链表数据结构及其基本操作介绍与实现

    内容概要:本文详细介绍了链表作为一种常用...其他说明:通过具体的实例和详尽的操作步骤,学习者可以更加直观地感受到链表的魅力。此外,文中提供了多种链表的实际应用场景,有助于学习者将理论知识应用于实际项目中。

    学生成绩管理系统(链表).rar

    《基于链表实现的学生成绩管理系统》 在IT领域,数据结构是计算机科学的基础,而链表作为其中的一种重要...同时,这个系统也适用于复习基础的同学,通过构建实际系统,可以更直观地感受到数据结构在解决问题中的作用。

    数据结构实验报告-2-2-线性表(链表实现).docx

    通过实际编程,我们可以更直观地感受链表如何在内存中动态变化,以及如何高效地执行各种操作。 总之,这个实验提供了实践链表操作的机会,对于理解数据结构和算法的基础知识至关重要。掌握链表不仅对理解其他高级...

    C语言顺序表_单链表_双链表代码.zip

    此外,作者提到代码已经过测试并可用,这为初学者提供了一个很好的起点,可以直接运行和调试代码,以直观地感受数据结构的运作。如果遇到任何问题,作者也表示愿意帮助解答,这为学习过程提供了良好的支持。 总的来...

    c代码-C语言链表的相关操作

    在IT领域,C语言是一种非常基础且强大的编程语言,尤其在处理底层数据结构和算法时。链表作为数据结构中的重要一员,是理解和掌握...通过实际编写和调试代码,开发者可以更直观地感受链表的工作原理,提升编程能力。

    学生信息系统.zip11111111

    通过这个项目,新手可以更直观地感受到数据结构和算法在实际问题中的应用,为今后的编程生涯奠定坚实基础。 总的来说,“学生信息系统”是一个结合理论与实践的优秀项目,它将链表与指针的知识巧妙地融入到日常管理...

    6. 散列表-感受数组的魅力1

    为减少阻塞时间,可以采用双写策略,先创建新数组,然后在每次增删改查时同时操作旧表和新表,逐步迁移数据。 有序散列表是在散列表基础上附加一个双向链表,链表保持元素的插入顺序。这样,即使散列表中元素的位置...

    课程实验+单链表+C++程序

    在本课程实验中,我们将深入探讨使用C++编程语言实现单链表这一数据结构的...通过实际编写代码,你可以直观地感受到链表在内存管理和数据操作上的灵活性,这对于理解和应用数据结构至关重要。祝你在实验中取得成功!

    C语言课程设计 教学信息管理系统 大学编程作业(TUST 天津科技大学 2021年)

    本教学信息管理系统 ,我使用了链表数据结构来制作,实现了简单的增删查改逻辑,实现了文件的存储,并且终端界面较为美观易用。通过这次 C 语言课程设计的实践,我巩固了数据结构的知识,熟练应用了 C 语言指针。 这...

    C语言学习的数据结构代码.zip

    数据结构是计算机科学中的...通过阅读和运行这些代码,可以直观地感受C语言在数据结构中的应用,同时提升编程能力。学习数据结构不仅可以提高编程效率,还能为后续深入学习操作系统、编译原理等高级主题打下坚实基础。

    数据结构课程设计 停车场管理系统 大学编程作业(TUST 天津科技大学 2022年)

    通过这次数据结构课程设计的实践,我巩固了数据结构的知识,熟练应用了链表和栈。这个项目是我大三写的,现在回顾已经非常粗糙,分享出来一方面希望可以帮助初学者,另一方面希望能让同学们可以从目前大学中普遍毫无...

    数据结构课程设计

    ### 数据结构课程设计:链式简单选择排序 #### 一、课程设计问题描述及问题分析 ##### 1.1 课程设计问题...通过实际编程和测试,学生能更直观地感受到数据结构与算法的重要性,为后续的软件工程学习打下坚实的基础。

    数据结构(C++描述)实验程序

    数据结构是计算机科学中的核心课程,它探讨了...通过动手实践,你可以直观地感受数据结构的工作原理,加深对C++编程的理解,同时提升算法设计和分析的技能。对于计算机科学的学习者而言,这是一份非常有价值的资源。

    实验0+线性表的基本应用.doc

    在实验过程中,学生需要记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。例如,学生可以记录实验中遇到的困难,例如链表的实现、算法的选择等,然后记录解决办法,例如查看相关文献、与...

    影碟租赁系统租赁者管理的设计与实现

    ##### 6.1 感受和体会 通过本次课程设计,深刻理解了数据结构和算法的重要性,特别是在实际项目中的应用价值。同时也意识到了良好的代码习惯和文档编写对于项目维护的重要性。 ##### 6.2 对算法改进的想法 - 可以...

    以游戏促进数据结构课堂的快乐学习.pdf

    数据结构的知识点抽象、逻辑性强,学生往往难以直观感受其应用价值,而将其融入游戏,则可以将抽象的数据结构概念具体化、生动化,让学生在游戏的过程中体会和理解数据结构的实际用途。 文章首先概述了数据结构在...

    57119101_王晨阳_LRU1

    实验体会部分,王晨阳可能分享了自己对LRU算法的理解,以及通过实践感受到的LRU与其他近似算法(如FIFO、LFU等)的差异,同时也可能深入理解了虚拟内存的概念,例如页面替换的必要性、内存管理的策略选择等。...

    数据结构-通讯录

    总结来说,这个项目通过实际的通讯录应用,使我们直观地感受到了数据结构在解决实际问题中的作用。它不仅锻炼了编程能力,也加深了对数据结构理论的理解。无论是链表的灵活性,数组的直接访问,还是树形结构的高效...

Global site tag (gtag.js) - Google Analytics