`
Liang_Hong
  • 浏览: 6452 次
社区版块
存档分类
最新评论

Java学习之,总结乎——链表

 
阅读更多

链表的含义是指线性表的链式存储。

链表有单链表,双链表,循环链表,这里只给出带头结点的单链表代码。

 

/**
 * 带头结点的单链表类
 * @author Administrator
 *
 */
public class LinkedNode {
    
	
	public Node root;//头结点
	public Node tail;// 尾节点
	public  int size;//单链表长度
	
	/**
	 * 在单链表末尾添加节点的方法
	 * @param node要添加的节点
	 */
	public boolean add(Node node){
		if(root==null){
			root=node;
			tail=node;
			return true;
		}
		tail.setNext(node);
		tail=node; 
		size++;
		return true;
	}
	
	/**
	 * 在指定位置插入元素
	 * @param index
	 * @param node
	 * @return 
	 */
	public boolean add(int index,Node node){
		if(index>=this.size)
			return this.add(node);
		else{
			Node n=this.root;
			for(int i=0;n.getNext()!=null&&i<index-1;i++){
				n=n.getNext();
			}
			node.setNext(n.getNext());
			n.setNext(node);
			this.size++;
		}
		
		return true;
	}
	
	/**
	 * 查找指定位置的元素
	 * @param args
	 */
	
	public Object get(int index){
		if(index<0||index>size)
			return null;
		Node node=root;
		for(int i=0;i<index;i++){
			node=node.getNext();
		}
		
		return node.getData();
	}
	
	
	
	/**
	 * 删除某一指定位置的元素
	 * @param index
	 */
	public Node delete(int index){
		Node node=root;
		if(index>=0){
			for(int i=0;i<index-1&&node.getNext()!=null;i++){
				node=node.getNext();
			}
			if(node.getNext()!=null){
				if(node.getNext()==this.tail)
					this.tail=node;
				node.setNext(node.getNext().getNext());
				this.size--;
			}
		}
		return node;
	}
}

/**
 * 节点类
 * @author Administrator
 *
 */
public class Node {
    private Object data;//数据域
    private Node next;//引用域 
    
    
	public Object getData() {
		return data;
	}
	public void setData(Student data) {
		this.data = data;
	}
	public Node getNext() {
		return next;
	}
	public void setNext(Node node) {
		this.next = node;
	}
}

/**
 * 测试类
 * 将学生对象加入链表,按照分数非递减排序后并输出
 */
import java.util.Random;

   public class Student {
	   
    private int score;
     
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
     
   public static void main(String[] args) {
		
	   
		LinkedNode link=new LinkedNode();
		
		Random ran=new Random();

		//添加节点
		for(int i=0;i<10;i++){
			 Student stu=new Student();
			int score=ran.nextInt(10)+1;
			stu.setScore(score);
			Node node =new Node();
			node.setData(stu);
			link.add(node);
		}
		
		//输出排序前
		System.out.println("排序前"+link.size+"个学生分数:");
		for(int i=0;i<link.size;i++){
			Student st=(Student)link.get(i);
			System.out.print(st.score+" ");
		}
       
		//排序
		for(int i=0;i<link.size;i++){
			for(int j=i;j<link.size;j++){
			int max=0;
			Student st=(Student)link.get(i);
			Student st2=(Student)link.get(j);
			if(st.score>st2.score){
				max=st.score;
				st.score=st2.score;
				st2.score=max;
			}
			
		}
		}
		
		//输出排序后
		System.out.println("\n");
		System.out.println("排序后"+link.size+"的学生分数:");
		for(int i=0;i<link.size;i++){
			Student st=(Student)link.get(i);
			System.out.print(st.score+" ");
		}
		
	    }
}

 

分享到:
评论

相关推荐

    剑指offer计划2(链表)---java(csdn)————程序.pdf

    剑指offer计划2(链表)---java(csdn)————程序

    《Java数据结构和算法》学习笔记(4)——链表

    NULL 博文链接:https://yuan.iteye.com/blog/305989

    《Java开发实战经典》——学习攻略

    对于大部分的自学者而言,IO操作也许是最难过的一个坎了,如果没有很好的理解抽象类和接口的概念,那么要想充分的理解IO操作是很难的,在整个IO操作之中,完整的体现了Java语言多态性的设计思想,而且在学习IO的时候...

    java经典小游戏——贪吃蛇源码(线程、链表、GUI)

    java经典小游戏——贪吃蛇源码 在我们学习java的时候,为了提高我们的兴趣,我们经常会使用所学到的知识去做一些小游戏,我在这里分享了贪吃蛇的源码,有兴趣的可以去...

    Java-数据结构课设-链表实现通讯录管理系统

    第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 
 第二个模块——Menu()的功能是:显示提示选单。 
 第三个模块——Quit()的功能是:退出选单。 
 第四个模块——Create...

    java代码-使用java面向对象的方法实现链表的源代码

    java代码-使用java面向对象的方法实现链表的源代码 ——学习参考资料:仅用于个人学习使用!

    JAVA数据结构——单链表的操作.docx

    } } (2)建立链表及操作LinkList.java JAVA数据结构——单链表的操作全文共11页,当前为第1页。package ch02; JAVA数据结构——单链表的操作全文共11页,当前为第1页。 import java.util.Scanner; public class ...

    java算法——稀疏矩阵

    稀疏矩阵 * 每个非零元素及其对应的行下标和列下标构成一个三元组, * 稀疏矩阵中所有这样的三元构成一个以三元组为数据... * 链表结构存储——三元链表中每个结点的数据域由稀疏矩阵非零元的行号、列号和元素值组成

    【后端】java基础(4.4)java中级基础之集合——Map

    它的底层结构是链表散列,也就是一个数组结构然后每个数组结构里包含的一个链表。我们平常直接叫它“键值(key——value)”结构。 map的实现接口有有不少,比如: HashMap Hashtable TreeMap LinkedHashMap 我们...

    数据结构与算法 —— Java 实现(链表)

    数据结构与算法 —— Java 实现(链表)一、单链表1.1 链表的定义1.2 链表添加一个新的节点1.3 判断当前节点是否为最后一个节点 (isLast)1.4 删除下一节点 (removeNext)1.5 显示节点信息(show)1.6 插入一个...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    关于java程序员发展需要学习的路线整理集合 技术 应用技术 计算机基础知识 cpu mem disk net 线程,进程 第三方库 poi Jsoup zxing Gson 数据结构 树 栈 链表 队列 图 操作系统 linux 代码控制...

    【后端】java基础(4.2)java中级基础之集合——List

    我们主要来学习Set的三个实现类。 HashSet TreeSet LinkedHashSet 同样,它们之间的相同点有: 都是Set的实现类 存入的元素不能重复 都是无序的(不能通过下标来查询) 他们也有不同点: HashSet的底层结构是哈希表...

    管理系统——通讯录

    链表做的管理系统```查找 删除排序 文件 文件的追加等等

    algo-learn:学习数据结构与算法的代码示例,目前提供Java,Python,Go三种语言支持

    学习数据结构与算法的代码示例,目前提供Java,Python和Go三种语言支持。编程是一门实践的手艺,多多练习,多多思考,把这里的所有算法,数据结构,以及对应的常见leetcode习题都自己的手敲几遍,增强自己的编码基本...

    JAVA学习笔记第十四天

    JAVA学习笔记第十四天——字符集编码解码、泛型的使用、数据结构栈和链表、集合框架&List,示例代码,里面主要是知识点的具体使用和各种现象。

    【Java演示】什么是链表?数据结构(三)

    目录链表:随机存储,顺序访问(读取)前言...我加了一些自己的总结、代码(我代码实现是参考了本书以及java自带LinkedList的源代码) 我发现本书有关链表的代码存在错误,已经向作者反馈 建议有能力的同学直接去看jav

    数据结构课程设计-基于Java swing的股票交易模拟系统(源码+数据库+ppt).zip

    —————————————————————————————————————— 2、实验思路(详细描述解决问题的整体思路、涉及的算法思想及数据结构等) 该实验运用了数据库的知识,模型 视图 组件也被应用在...

    java面试题库2021.pdf

    牛客网——互联网学习求职必备神器 名企校招历年笔试面试真题, 尽在牛客网 牛客网, 互联网人都在用的学习求职神器 ②JSP 语法, EL, 内置对象 ③Listener 和 filter 2、 Web 编程进阶 ①Servlet、 标签的作用 ②...

    Java开发详解.zip

    000000_【课程介绍 —— 写在前面的话】_Java学习概述笔记.pdf 010101_【第1章:JAVA概述及开发环境搭建】_JAVA发展概述笔记.pdf 010102_【第1章:JAVA概述及开发环境搭建】_Java开发环境搭建笔记.pdf 010201_【第2...

Global site tag (gtag.js) - Google Analytics