
数据结构——Java
lemon100521
这个作者很懒,什么都没留下…
展开
-
线性表——顺序表
线性表——顺序表线性表线性表:n(n>=0)个数据元素组成的一个有限序列,可以在任意位置进行插入和删除操作的线性数据结构。 从数据在物理内存存储形式上线性表可分为:顺序表和链表从上图可以看出: 线性表中数据与数据之间存在一对一的关系,即除第一个元素和最后一个元素外,没给元素都有唯一的直接前驱和唯一的直接后继,第一个元素没有前驱,最后一个元素没有后继。顺序表 顺序表:用一段地址连...原创 2018-03-31 14:24:00 · 344 阅读 · 0 评论 -
【排序算法】——冒泡排序、选择排序、插入排序、Shell排序等排序原理及Java实现
排序1.定义:所谓排序,即是整理文件中的内容,使其按照关键字递增或递减的顺序进行排列。输入:n个记录,n1,n2……,其对应1的关键字为k1,k2……输出:n(i1),n(i2)……,使得k(i1)<=k(i2)……(形象点讲就是排排坐,调座位,高在前低在后;或者低在前高在后)2.排序算法的评价的专业术语(1)稳定性 稳定:在排序的文件中,若存在多个关键字相同的记录...原创 2018-08-15 21:26:20 · 304 阅读 · 0 评论 -
链表顺序表常见面试题(4)——Java语言实现
判断两个链表是否相交,若相交,求交点。(假设链表不带环)step1:在不带环的情况下对链表是否相交进行判断,即遍历两个链表,链表的最后一个节点的值相等则表明链表相交。step2:求交点,我们可以先对两链表的长度进行比较,使得长的链表先走长度差步,然后两个链表一起走,当两个链表遇到第一个所对应节点的值相等时,则就是交点。/** *@Description: 判断两个链表是否相交...原创 2018-08-07 20:07:56 · 191 阅读 · 0 评论 -
链表顺序表常见面试题(3)——Java语言实现
查找单链表的中间节点,要求只能遍历一次链表在只能遍历一遍链表的基础上我们需要查找到中间节点,则需设置一个快慢节点fast&slow,当我们每次只让慢节点走一步快节点走两步,则当快节点为空时,则慢节点即为要查找的中间节点。package com.struct.interview_question.list_interview_question.findmiddlenode;...原创 2018-07-27 18:09:25 · 187 阅读 · 0 评论 -
链表顺序表常见面试题(2)——Java语言实现
逆置/反转单链表同从尾到头打印单链表一样,我们可以分别采用递归和栈来进行操作。单链表排序(冒泡排序&快速排序)冒泡排序:对相邻的两个节点的值进行比较,若是逆序则交换其值。package com.struct.interview_question.list_interview_question.listsort;public class BubbleSort ...原创 2018-07-26 17:37:26 · 228 阅读 · 0 评论 -
链表顺序表常见面试题(1)——Java语言实现
从尾到头打印单链表(知道链表的头结点)针对从尾到头打印链表,我们可以采用两种方式:(1)利用栈的特性(先进后出),遍历链表将元素入栈,当链表为空时,依次出栈。(2)采用递归方法,但是当数据量足够大时可导致栈溢出。package com.struct.interview_question.list_interview_question;//定义链表的节点public class...原创 2018-07-26 14:16:42 · 317 阅读 · 0 评论 -
JVM——Java内存区域
JVM 一、概念虚拟机:通过软件模拟的具有完整硬件功能的运行在一个完全隔离环境中的完整操作系统。JVM:软件虚拟Java字节码指令集。HoSpot是Java默认的虚拟机。二、Java内存区域与内存溢出异常Java虚拟机所管理的内存包括如下几个运行时数据区域:(1)线程私有区域(随线程的创建与销毁而创建与销毁):程序计数...原创 2018-05-26 23:31:30 · 151 阅读 · 0 评论 -
队列——Java实现
package struct;interface IQueue{ //入队列 void add(Object obj); //出队列 Object remove(); //队列中元素个数(栈大小) int size(); //判断队列是否为空 boolean isEmpty(); //取队头元素 Object getQueueHead(); //取队尾...原创 2018-04-18 21:01:07 · 240 阅读 · 1 评论 -
链式栈——Java实现
package struct;//接口interface ILinkStack{ //栈中元素个数(栈大小) int size(); //取栈顶元素 Object top(); //判断栈是否为空 boolean isEmpty(); //入栈 Object pop(); //出栈 Object push(Object value); //清空栈 void clear...原创 2018-04-17 21:28:30 · 635 阅读 · 0 评论 -
数组实现堆栈——Java实现
package struct;//接口interface IArrayStack{ //栈的容量 int length(); //栈中元素个数(栈大小) int size(); //取栈顶元素 Object top(); //判断栈是否为空 boolean isEmpty(); //入栈 Object pop(); //出栈 Object push(Object v...原创 2018-04-17 20:09:19 · 1332 阅读 · 0 评论 -
常见排序——Java实现
package struct;/** * * @作者:dyy * @公司:陕西科技大学 * @修改日期: * @邮箱:1101632375@qq.com * @描述:Java实现几种常见排序 *///选择排序类class SelectSort{ public void selectSort(int[] arr){ for(int i = 0;i < arr....原创 2018-04-16 21:35:16 · 152 阅读 · 0 评论 -
二叉树——Java实现
package struct;interface Tree{ //插入元素 void insert(int value); //中序遍历 void inOrder(); //先序遍历 void perOrder(); //后序遍历 void postOrder(); //层序遍历 //void levelOrder(); //求最小值 int getMinValue()...原创 2018-04-16 19:49:30 · 183 阅读 · 0 评论 -
Java实现单链表的增删查改及逆置打印
//所提供的接口LinkList.javapackage Struct;public interface LinkList { //判断链表为空 public boolean linkListIsEmpty(); //尾插 public void linkListPushBack(Object obj); //尾删 public void linkListPopBack(); //头插 publi...原创 2018-04-10 21:07:44 · 790 阅读 · 0 评论 -
双向链表——Java实现
双向链表 链表是是一种重要的数据结构,有单链表和双向链表之分;本文我将重点阐述不带头结点的双向链表: 不带头结点的带链表我将对双链表的增加和删除元素操作进行如下解析 1.增加元素(采用尾插法)(1)链表为空 新建结点,将头结点first和尾节...原创 2018-04-15 11:06:03 · 396 阅读 · 0 评论 -
单链表
接口 LinkList.javapackage Struct;public interface LinkList { //判断链表为空 public boolean linkListIsEmpty(); //头插 public void linkListPushFront(int value); //头删 public SNode linkListPopFront(); //打印链表 public...原创 2018-04-08 23:29:44 · 121 阅读 · 0 评论 -
【排序算法】——快速排序、归并排序的排序原理及Java实现
5.快速排序(1)算法描述 快速排序是一种划分交换排序,采用分治的策略(分治法)。通过一趟排序 将待排序序列划分为两个独立的部分,其中一部分的记录的关键字均小于另 外一部分的关键字。 分法法的基本思想:将原问题分解为若干个规模更小但是结构和原问题相似 的子问题,递归地解决这些子问题,然后将这些子问题的解组合成原问题的解。(2)算法实现 ...原创 2018-08-16 19:50:40 · 322 阅读 · 0 评论