数据结构

数据结构,是一门研究非数值计算的程序设计问题中的计算机的操作对象以及它们之间的关系和操作等的一门学科。

数据:能输入到计算机并被计算机处理的符号的总称
数据元素::数据的基本单位,由若干数据项组成。数据项是不可分割的最小的数据单位
数据对象:数据的子集,性质相同的数据元素的集合
根据数据元素的关系的不同:
1、集合
2、线性结构
3、树形结构
4、图形或网状结构
下面一个例子,是一个简单的哈夫曼树:
首先定义一个结点类:
public class Node {
public int data;
public Node left;
public Node right;

}
当创建一个Node对象时,它可存储一个数值,还可连接两个Node类型的成员变量。
首先创建n个Node对象并对它们分别赋值,将他们存储到一个数组里。用一个排序方法把它们按所存储的值从小到大存储在这个数组里。每次取出最小的两个数n1,n2,将它们的值相加,用这个值来做新创建的node的data值,把data值小n1赋值给node的左值left,n2就赋给右值right。把n1、n2从数组中删除,将node放到数组中,重新排序,重复上述做法,知道数组中只剩一个Node对象为止。
此时的n个Node对象就构成了一个哈夫曼树结构。代码如下:
public Node creatTree(int[] a){
Node[] nodes=new Node[a.length];
for(int i=0;i<a.length;i++){
Node node=new Node();
node.data=a[i];
nodes[i]=node;
}
while(nodes.length>1){
sort(nodes);
Node node=new Node();
node.data=nodes[0].data+nodes[1].data;
node.left=nodes[0];
node.right=nodes[1];
Node[] nodes1=new Node[nodes.length-1];
for(int i=0;i<nodes1.length-1;i++){
nodes1[i]=nodes[i+2];
}
nodes1[nodes1.length-1]=node;
nodes=nodes1;
}
return nodes[0];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值