- 浏览: 16719 次
- 性别:
- 来自: 永州
文章列表
花了很长时间写的哈夫曼压缩,终于完成了,在介绍写哈夫曼压缩软件之前,先给大家普及一些小知识。
1、什么是哈夫曼编码?
哈夫曼编码(Huffman Coding)是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长 度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。
2、什么是哈夫曼树?
哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶
对于链表有很多其他的操作,如对链表中的数据进行排序,对单向链表的结点逆置,判断一个链表是否是循环链表等等。
首先我们先解决对链表中的数据进行排序的问题,链表中只有一个数据还好办,直接交换元素即可,可是链表中的数据域不一定只有一个元素,而且数据类型如果是Object类也有点复杂,要首先转换成String类型,然后强制转换成int类型才能进行比较。
/**
* 链表的排序方法
*/
public void sort(){
Node node=head;
while(node !=null){
No ...
链表是一种存储结构,由一系列的结点组成。链表包括单向链表,循环链表,双向链表等,在这里,我们只讲单向链表,单向链表的每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指 ...
文件搜索器是与File类有关的一个小工具,首先介绍一下File类的用法:File类位于java.io包中,可以通过File对象的方法创建文件对象,删除文件,列表目录下的文件,判断文件是目录还是正式文件,文件主要包括目录类型的文件和真实文件两种,不可能有同名的,目录包括相对目录和绝对目录。
文件搜索器,首先要有一个界面:
实现该界面的代码如下:import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.TextArea;
import javax.swing.JButton;
import java ...
Java中集合类定义主要是在java.util.*包下面,常用的主要有三大接口
1,java.util.Set接口:
Set是一个无序的集合,对集合成员的访问和操作是通过集中对象的引用进行的,所有Set集合中不能有重复对象,要查找某一元素,必须通 ...
Java中总共有48个关键字,关键字开头一定是小写的字母
接下来小结一下一些常用关键字的用法
1,可见性修饰关键字:
a.public 关键字
public 放在类前面,表示这个类可以被其他包中的类的对象访问。放在方法前面,表示方法可以被其他包中的类调用,放在属性前面,可以直接通过 对象.属性来访问对象的属性。public 是公开性最高的一个关键字。在interface和abstract中定义的方法,即使不写也默认为public,属性一般定义为私有的。
b,private 放在类,方法和属性前面,只能由类内部的对象和构造方法调用,在类继承中,父类中的private方法不能被子类调 ...
五子棋人机博弈————顾名思义,就是玩家与计算机下棋,首先要考虑一下几个方面:
1,棋盘与棋子的实现
2,玩家下完棋后,计算机要根据当前玩家所下的棋子找出最佳下棋点
3,输赢的判断
棋盘与棋子的实现和输赢的判断问题在五子棋人人博弈中已经解决了,接下来主要是解决计算机在玩家下完棋以后如何找到最佳下棋点。
1,首先需要定义权值,以便电脑根据棋盘上某一点在四个方向上的权值之和来判断最佳下棋点。然后,给出权值算法,用于计算棋盘上某一点的利于电脑而不利于玩家的权值之和,最后,用一个循环来遍历整个棋盘以检测最佳权值点。
a,定义权值(玩家代表黑子)
例如:黑白白空 50
其意义为,黑 ...
五子棋之人人五子棋的实现也算是继画板之后的另外一大工程了吧,不过还好,过程没有想象中的难,接下来就来看看如何实现简单的五子棋吧!!这是五子棋的界面,虽然说很粗糙简单,可是基本功能还是很齐全的~~~
首 ...
用数组来实现画图板的重绘,缺陷显而易见,因为数组的长度是固定的,因此我们可以用一种更好的方法来实现重绘,队列。它与数组最大的区别就是,它就是自动增长。接下来是源代码:
第一个类:
/**
* 画图板的面板
*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener ...
先前开发了画图板程序,但是将画板窗体最小化或者改变窗体大小的时候,先前画的东西就全部没有了,这是因为当窗体在屏幕上显示的时候,首先是将窗体对象的数据从内存中取出来放到缓存中,再在屏幕上进行绘制。当 ...
数组是Java中最基本的一种数据结构,可以理解为一个容器--在数组中可以放其他的东西,接下来我们看看数组是怎么用的吧!
1,数组的基本特征:
a,数组的长度是固定的
b,数组是有序的
c,数组中每一个元素都有一个唯一的索引位置,这个索引数值从0开始,最大的数组长度为-1
2.数组定义的几种基本方式
int[] ia; String[]=new String[]{"java","net"}
ia=new int[5];
String[] ia=new String[2];
...
一,自动转型:
先有继承,才会有重写和自动转型,如电脑中short类型变为int类型,就是自动转型,但反过来则不行,必须得强制转型。继承以后,子类对象会自动转变为父类对象,如果子类重写了父类中的方法,调用的是子类的方法,否则就是父类中的方法。例如:
Student uns=new UNStudent();
此时,此时的uns是学生类型的
自动转型的好处:减少代码数量的编写。
二,多态:
相同类型的对象调用相同的方法,由于继承和重写机制,得到的结果不一定相同。
三,抽象类的使用:
抽象类是介于类和接口之间的定义,即可以定义已实现的方法,也可以定义 ...
与其说有些事情是机缘巧合,还不如说是冥冥中早有注定,高考选专业时,对于那一串串看不懂的专业的名字,的确是没辙,当时就想只要我的专业与数学和计算机没什么关系,我就有信心让自己对所选专业感兴趣,并且好 ...
一,接口的定义用interface,而不是用class,接口中定义了一个没有任何方法体实现的方法-这是接口中定义方法的原则,只要定义方法返回类型,方法名,参数表,不能有实现!值得注意的是,方法前无论是否写了public限定符,接口中的方法都是public型的。
二,不能直接用接口创建对象,而是要再编写一个类去实现这个接口。
具体的例子如下:
//创建一个关于人的接口
public interface person {
//接口的属性必须要初始化
public final static String name="小草";
public v ...
来到蓝杰已经学习一周了,感觉收获真是不少啊,接下来,就好好总结一下这一周所学到的知识吧!
一,对于java编写,翻译,运行过程的理解
Java程序开发过程分为四步:第一步;编写源码;第二步:编译源码;第三步: ...