数据结构
无清
每篇博客一句励志名言,与大家共勉
展开
-
java 双向链表实现列表
熟读唐诗三百首,不会作诗也会吟。 —— 孙洙列表提供的访问、更新方法,按照面向对象的规范对列表的节点对象进行了封装,称为位置。ExceptionPositionInvalid异常-------------------------------------------------------------------------------原创 2016-02-06 12:42:01 · 546 阅读 · 0 评论 -
java 可扩充数组实现向量
学会以最简单的方式生活,不要让复杂的思想破坏生活的甜美。——弥尔顿由于数组实现向量有个很大缺陷 --- 数组容量固定。可扩充数组很好的解决这个问题。n 实际容量 N 数组容量思想是一旦数组空间溢出(n >= N)insertAtRank()方法做一下处理:1、开辟一个容量为2N的新数组B2、将A[]中各元素复制到B[]3、将A替换为B但每次扩容原创 2016-02-04 20:32:19 · 418 阅读 · 0 评论 -
java 数组实现向量
人生的意义就在于人的自我完善。——高尔基向量:由一组按线性次序排列的元素组成,并支持若干个访问、插入和删除元素的方法。可以通过下标直接访问序列中元素。例子:参数的秩越界时,抛出的异常-------------------------------------------------------------------------------------原创 2016-02-04 20:15:42 · 643 阅读 · 0 评论 -
java 双向链表实现双端队列
每天都是一年中最美好的日子。双端队列 :前端与后端都支持插入和删除操作的队列 在实现双向链表时,为了使变成更加简洁,通常在最前端和最后端设置一个头节点和一个尾节点,他们并不存储实质的数据对象,头结点的后继节点指向首节点,尾节点的前驱节点指向末节点。双端队列的接口-------------------------------------------原创 2016-02-02 21:23:59 · 918 阅读 · 1 评论 -
java 单链表实现队列
一个今天胜过两个明天。出于效率方面考虑,将单链表的首节点作为队列首节点,这样可以回避单链表在尾部进行删除操作时效率低下的缺点(在尾部进行删除要先遍历数组找到末节点的直接前驱结点,才能进行删除操作,这需要 O(n) 时间),在后面双端队列解决了这一缺点。 引入的类前面的博客有实现。单链表实现队列原创 2016-02-02 21:08:22 · 585 阅读 · 0 评论 -
java 单链表实现栈
人生最大的错误是不断担心会犯错。由于数组实现栈时,长度必须固定,因此空间效率及适应性不是很理想。单链表 每个节点的 next 引用都相当与一个链接或指针,指向另一节点。单链表的长度不再固定,可以根据实际不断变化,如此以来,包含N个元素的单链表只占用 O(N) 空间,比定长数组更为灵活。例子:单链表节点的实现--------------原创 2016-02-02 20:42:48 · 412 阅读 · 0 评论 -
java利用队列模拟Josephus环
人生在勤,不索何获。 —— 张衡Josephus环例子 “烫手山芋” :一群小孩围成一圈,有一个刚出锅的山芋在他们之间传递。其中一个孩子负责数数,拿着山芋的孩子必须退出,然后重新数数。如此不断,最后剩下的那个孩子就是幸运者。例子所用的队列是之前博客中实现的队列。输出 :dfvsz dssz zdv zdvd daw原创 2016-01-31 00:45:43 · 372 阅读 · 0 评论 -
java循环数组实现队列
积土而为山,积水而为海。 —— 荀子使用循环数组能充分利用空间,利用 %capacity(数组实际容量) 解决队列假上溢现象代码如下:-----------------------------------------------------------------------------------------------原创 2016-01-30 21:15:44 · 292 阅读 · 0 评论 -
java 括号匹配算法
最累的时候,家人是你最好的归宿。算法的设计思想:1. 依次扫描各个符号,凡出现左括弧,则进栈2. 凡出现右括弧,首先检查栈是否空 若栈空,则表明右括号多了 否则和栈顶元素比较,若相匹配,则左括弧出栈, 否则匹配不正确3. 表达式检验结束时, 若栈空,则匹配正确, 否则表明左括号多了例子中用到的栈是之前博客中用数组实现的栈pac原创 2016-01-29 01:16:26 · 1051 阅读 · 0 评论 -
java数组实现栈
程序不是年轻的专利,但是,他属于年轻。栈(Stack):只允许在一端进行插入或删除操作的线性表。(先进后出)实现如下:package 数组实现栈;/** * 栈接口 * @author Administrator * */public interface Stack {public int getSize();//返回栈中元素数量原创 2016-01-29 00:34:28 · 393 阅读 · 2 评论 -
java递归求和、倒置算法
递归算法是一种直接或者间接地调用自身算法的过程。它往往使算法的描述简洁而且易于理解。递归算法解决问题的特点:(1)递归就是在过程或函数里调用自身。(2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。(3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。(4)在递归调用的过程当中系统为每一原创 2016-01-25 23:37:48 · 1081 阅读 · 0 评论 -
java 列表实现树迭代器
世上没有绝望的处境,只有对处境绝望的人。 —— 费洛姆列表实现的树迭代器 实现了前序遍历、后序遍历、层次遍历方法。列表实现树迭代器 (导入的类前面的博客中有具体实现)原创 2016-02-09 23:40:33 · 778 阅读 · 0 评论 -
java 链表实现树
人之所以能,是相信能。基于链表实现时采用的是”父亲 - 长子 - 弟弟“模型来定义。树接口-------------------------------------------------------------------------------------------------------------------------原创 2016-02-09 16:58:29 · 1036 阅读 · 0 评论 -
java 列表实现迭代器
一个人静静坐在电脑面前写代码的感觉,那是什么感觉?那是武林高手闭关修炼的感觉。迭代器是软件设计的一种模式,它是对“逐一访问所有元素”这类操作的抽象。迭代器接口---------------------------------------------------------------------------------------------------原创 2016-02-08 19:32:01 · 736 阅读 · 0 评论 -
java 双向链表实现序列
想哭就哭,想笑就笑,不要因为世界虚伪,你也变得虚伪了。实现一个序列,将向量 与 列表 中的所有方法集成起来,同时支持以秩或位置访问其中元素。通过多重继承定义序列序列接口----------------------------------------------------------------------------------------原创 2016-02-08 15:13:23 · 262 阅读 · 0 评论 -
java 实现堆排序
“北上广不相信眼泪”堆排序是一种利用堆结构(指一种完全二叉树)进行排序的算法,是一种不稳定的排序算法,辅助空间为O(1),时间复杂度为O(nlog2(n))。堆排序利用大顶堆(小顶堆)这一排序特征,使得查找最大(最小)关键字变得十分简单1、建堆(通过)原创 2016-06-27 21:45:50 · 386 阅读 · 1 评论