`
java2liwei
  • 浏览: 14045 次
  • 性别: 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);
		}

	}
	


}

 

 

分享到:
评论

相关推荐

    并发容器和线程池,java并发编程3

    类,来感受⼀下JDK⾃带的并发集合带来的“快感”。 ConcurrentLinkedQueue是⼀个基于链接节点的⽆界线程安全队列,它采⽤先进先出的规则对节点 进⾏排序,当我们添加⼀个元素的时候,它会添加到队列的尾部,当我们...

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

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

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

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

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

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

    数据结构之学生成绩管理系统.doc

    将所学数据结构方面的知识与一门具体的语言——C语言来进行实现,感受数据结构的强大 作用,加深理解。 二、 试验要求 管理系统中有五个要求:输入 查找 修改 插入 删除 存储 1. 输入要求:能够通过键盘输入和文件...

    leetcode中国-gitbook:gitbook上面的同步内容

    leetcode中国 前言 fuck-leetcode的想法和目的 我为什么写这样的一个博客呢? 对于算法的考察,我发现...推荐首先刷链表,因为链表可以锻炼我们写出鲁棒性更强的代码,想想自己曾经因访问空指针而被段错误支配的恐惧

    JavaScript版 数据结构与算法

    第1章 课程导学对课程整体进行介绍,让您切实感受到前端工程师学习数据结构与算法的必要性。 1-1 课程导学 试看 1-2 学习姿势 1-3 说明与承诺第2章 基础算法之“字符串类”字符串作为JS最基本的数据类型,掌握好字符...

    python实现名片管理系统项目

    写在前面的话:笔者之前在初学C/C++时,都曾写过类似的管理系统。这次使用Python来书写这个管理系统,深刻地感受到python对程序员的友好。如果使用C来实现,必然需要手写一下链表;而使用C++,显然需要使用STL中的...

    leetcode题库-LeetCode-Rust:听说刷题建repo是立flag一般的行为?

    写题真是酸爽无比啊! (各种意义上的) 刷了几天的感受 Rust 运行速度是真 TM 快 有了 NLL 以后与 borrow checker 作斗争的次数也少了, 体验大幅上升 是刷题的不二之选 以上不包括使用了非标准库的链表、树等数据结构...

    c语言c++项目源代码_C语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.rar

    冒泡排序和快速排序则是经典的排序算法,通过实际编码实现,可以更加直观地感受它们的效率差异和应用场景。 除此之外,项目还包含了链表、栈、队列等其他常见数据结构的实现,以及基于这些数据结构的实际应用案例。...

    c语言奔跑的火柴人游戏源码.zip

    障碍物的循环移动需要使用到链表或数组等数据结构,通过不断改变障碍物的位置和样式来实现循环效果。 总之,这段代码不仅仅是一个小游戏的实现,更是一个综合性的编程实践项目,涵盖了许多C++语言和编程技术的内容...

    啊哈!算法(1024ebook.com).pdf

    游戏,在轻松愉悦中便掌握算法精髓,感受算法之美。 本书中涉及到的数据结构有栈、队列、链表、树、并查集、堆和图等;涉及到的算法有排序、枚举、 深度和广度优先搜索、图的遍历,当然还有图论中不可以缺少的四种...

    西北工业大学计算机学院计算机操作系统实验报告一 创建GeekOS

    第一个线程是s_freelist中新创建的空闲页链表中的,初始化它的时候Setup_Kernel_Thread的目的是将线程的上下文压入栈中,因为第一个线程无下文,不需要调用,所以直接将线程压入栈中。 2. 内核线程结构体中定义了三组...

    mickey0524.github.io:mickey的个人博客

    链表的排序(归并) Icommon生成自定义字体 leetcode-日常温度计算 2017年终总结 ES6知识点温习 numpy,pandas,matplotlib基础 RN基础学习 python小白入门 webpack学习 优秀的开发文章(长期更新) web前端下载 ...

    javalruleetcode-Leetcode-Solutions:为了去头条而刷题

    java lru leetcode LeetCode Solutions 算法 - Algorithms 排序算法:快速排序、归并排序、计数排序 ...Python是我的入门语言,JAVA是我来带拼多多这边开始学习的,让我感受到了静态语言的魅力,Go是头条那

    BIRCH聚类算法

    关于BIRCH的更多特点先不介绍,我先讲一下算法的完整实现细节,对算法的实现过程搞清楚后再去看别人对该算法的评价才会感受深刻。 你不需要具备B树的相关知识,我接下来会讲得很清楚。 BIRCH算法的过程就是要把待...

    0基础学习前端开发的一些建议

    我们俨然能感受到前端岗位现在已经发展成了最重要的研发岗位之一,所以多我们提出的要求也就越来越高了。所以我们需要的也就不仅仅只是掌握css、html、JavaScript了,但是这三大件一直都是前端的根本,这一点从未...

    leetcode下载-leetcode-01:leetcode-01

    leetcode下载 一些闲话: ...但我能设身处地的感受到:即使有这样一个整体规划,对于一位初学者甚至算法老手寻找合适自己的题目也是很困难,时间成本很高,而且题目还不一定就是经典题目。 对于刷题,我们都

    leetcode下载--leetcode:-leetcode

    但我能设身处地的感受到:即使有这样一个整体规划,对于一位初学者甚至算法老手寻找合适自己的题目也是很困难,时间成本很高,而且题目还不一定就是经典题目。 对于刷题,我们都是想用最短的时间把经典题目都做一篇...

Global site tag (gtag.js) - Google Analytics