算法实验报告,页面置换算法实验报告,磁盘调度算法实验报告,进程调度算法实验报告 流星侠文摘网 > 银行家算法实验报告 > 算法实验报告,页面置换算法实验报告,磁盘调度算法实验报告,进程调度算法实验报告 正文

算法实验报告,页面置换算法实验报告,磁盘调度算法实验报告,进程调度算法实验报告

发布时间:2013-11-03 来源: 银行家算法实验报告

算法实验报告,算法,报告,实验,算法实验报告,算法实验,实验报告,遗传算法,算法导论,加密算法,山东省实验中学

算法设计与分析实验报告 实验题目:活动安排 哈夫曼编码 姓名:裴敏 班级:计算机 1202 学号:1211610129 一:实验目的 加深对算法的理解 二:实验要求 用 C 语言实现活动安排 哈夫曼编码 单源最短路径 三:程序代码 1.活动安排 #include <stdio.h>

#define active_num 5 //活动数 #define true 1 //记录被选的活动 #define false 0 //未被选择的活动 int greedySelector(int s[],int f[],int b[]) // 算法 { b[0] = true;

int j = 0;

int i = 1;

int count = 1;

for(i = 1;i <=active_num;

i++ ) { if(s[i] >

f[j]) { b[i] = true;

j = i;

count++;

} else b[i] = false;

} printf("active number is %d\n",count);

for(i=0;i<active_num;i++) { if(b[i] == 1) printf("%d ",i+1);

} return 0;

} int main() { int i;

int start_time[active_num];

int finish_time[active_num];

int boolean[active_num]; printf("please input the start time\n");

for(i = 0;

i <

active_num;

i++) scanf("%d",&start_time[i]);

printf("please input the finish time\n");

for(i = 0;

i <

active_num;

i++) scanf("%d",&finish_time[i]);

greedySelector(start_time ,finish_time ,boolean);

return 0;

} 2:哈夫曼编码 #define MAXVALUE 10000 #define MAXLEAF 30 #define MAXNODE 59 #define MAXBIT 10 #include<stdio.h>

typedef struct { int data;//结点值 int weight;//权重 int flag;//表示是否带结构节点,是的话用 0 表示,否则 1 表示 int parent;//父结点 int lchild;//左结点 int rchild;//右结点 }hnodetype;

typedef struct { int bit[MAXBIT];

int start;

}hcodetype; void InitHaffman(hnodetype HuffNode[],hcodetype HuffCode[],int n) { int i;//把生成的节点初始化,把指向父结点的指针,左孩子、右孩子置空 for(i=0;i<2*n-1;i++) { HuffNode[i].weight=0;

HuffNode[i].flag=0;

HuffNode[i].parent=0; HuffNode[i].lchild=-1;

HuffNode[i].rchild=-1;

} for(i=0;i<n;i++) { getchar();

printf("输入第%d 个编码的值:",i+1);

scanf("%c",&HuffNode[i].data);

printf("输入对应编码的频率:");

scanf("%d",&HuffNode[i].weight);

} } void OutputHaffman(hnodetype HuffNode[],hcodetype HuffCode[],int n) { int i,j;

printf("%d 个叶结点对应编码为:\n",n);

for(i=0;i<n;i++) { printf("%c--------------",HuffNode[i].data);

for(j=HuffCode[i].start+1;j<n;j++) { printf("%d",HuffCode[i].bit[j]);

} printf("\n");

} } void Haffman(hnodetype HuffNode[],hcodetype HuffCode[],int n) { int i,j,m1,m2,x1,x2,c,p;

hcodetype cd;

for(i=0;i<n-1;i++)//构造哈夫曼树 { //根据哈夫曼树的构造过程,始终选择最小的权值的两个节点构成一棵二叉树 m1=m2=MAXVALUE;

//x1 和 x2 为最小权重的两个结点位置 x1=x2=0;

//循环从 flag 为 0 的节点中找到一个,供下面取最小值 for(j=0;j<n+i;j++) { if((HuffNode[j].weight<m1)&&(HuffNode[j].flag==0)) { m2=m1;

x2=x1;

m1=HuffNode[j].weight;

x1=j;//记下 x1 的地址 } else if((HuffNode[j].weight<m2)&&(HuffNode[j].flag==0)) { m2=HuffNode[j].weight;

x2=j;

} } //把找到的两个结点按照哈夫曼树的规则构建一个二叉树,x1 为左孩子,x2 为右 孩子 HuffNode[x1].parent=n+i;

HuffNode[x2].parent=n+i;

HuffNode[x1].flag=1;//将 x1 的下标置 1 HuffNode[x2].flag=1;//将 x2 的下标置 1 HuffNode[n+i].weight=HuffNode[x1].weight+HuffNode[x2].weight;

HuffNode[n+i].lchild=x1;

HuffNode[n+i].rchild=x2;

} for(i=0;i<n;i++) { cd.start=n-1;

c=i;

p=HuffNode[c].parent;

while(p!=0)//当父节点不为根结点的时候,逆序往上找 { //如果当前是做孩子则编码为 0 if(HuffNode[p].lchild==c) { cd.bit[cd.start]=0;

} else { cd.bit[cd.start]=1;

} cd.start--;

c=p;

p=HuffNode[c].parent; } for(j=cd.start+1;j<n;j++) { HuffCode[i].bit[j]=cd.bit[j];

HuffCode[i].start=cd.start;

} } } void main() { hnodetype HuffNode[MAXNODE];

hcodetype HuffCode[MAXLEAF];

int n;

printf("输入编码个数 n:\n");

scanf("%d",&n);

printf("\n");

InitHaffman(HuffNode,HuffCode,n);

Haffman(HuffNode,HuffCode,n);

OutputHaffman(HuffNode,HuffCode,n);

} 四:实验运行结果

课程: 系科: 班级: 姓名: 计算机算法分析与设计 计算机科学与技术 xx xxxxx 级 xx 班 学号:xxxxxxxxxxxxxx 年度: 2010-2011 学期: 上 计算机与信息科学学院 计算机科学实验教...

CRC实验报告 这是计算机网络第 数值计算方法上机报告 大家放心 光纤通信实验报告 实验一:光纤衰 操作系统实验报告 计算机 算法实验报告附有源代码,调试过程 操作系统内存...

你的位置: 资料下载 > 压缩文件 > 计算方法实验报告之拉格朗日 资料评分:5.0分 资料大小:5.38KB 资料授权:免费共享 下载次数:4次 应用平台:WinXp, Win2003, Win2000, ...

算法实验报告,页面置换算法实验报告,磁盘调度算法实验报告,进程调度算法实验报告》出自:流星侠文摘网
链接地址:http://www.liuxingxia.com/content/XoWI1Lws2uO3EJ0X.html

相关文章阅读

网站地图 | 关于我们 | 联系我们 | 广告服务 | 免责声明 | 在线留言 | 友情链接 | RSS 订阅 | 热门搜索
版权所有 流星侠文摘网 www.liuxingxia.com

算法实验报告,页面置换算法实验报告,磁盘调度算法实验报告,进程调度算法实验报告