77范文网 - 专业文章范例文档资料分享平台

离散数学实验指导书及其答案(3)

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

实验七 最优二叉树的应用

【实验目的】掌握求最优二叉树的方法。

【实验内容】最优二叉树在通信编码中的应用。要求输入一组通信符号的使用频率,求

各通信符号对应的前缀码。

【实验原理和方法】

(1)用一维数组f[N]存贮通信符号的使用频率,用求最优二叉树的方法求得每个通信符号的前缀码。

(2)用链表保存最优二叉树,输出前缀码时可用树的遍历方法。 #include #include #define N 13 struct tree {

float num;

struct tree *Lnode; struct tree *Rnode; }* fp[N];//保存结点 char s[2*N];//放前缀码

void inite_node(float f[],int n)//生成叶子结点 {

}

void sort(struct tree * array[],int n)//将第N-n个点插入到已排好序的序列中。 {

int i;

struct tree *temp; for(i=N-n;i

if(array[i]->num>array[i+1]->num) { int i;

struct tree *pt; for(i=0;i

pt=(struct tree *)malloc(sizeof(struct tree));//生成叶子结点 pt->num=f[i];

pt->Lnode=NULL;pt->Rnode=NULL; fp[i]=pt;

}

}

temp=array[i+1]; array[i+1]=array[i]; array[i]=temp;

struct tree * construct_tree(float f[],int n)//建立树 {

int i;

struct tree *pt; for(i=1;i

return fp[N-1]; }

void preorder(struct tree *p,int k,char c) {

int j; if(p!=NULL) { } }

if(c=='l') s[k]='0'; else s[k]='1';

if(p->Lnode==NULL) {//P指向叶子 }

preorder(p->Lnode,k+1,'l'); preorder(p->Rnode,k+1,'r');

printf(\for(j=0;j<=k;j++)

printf(\putchar('\\n');

pt=(struct tree *)malloc(sizeof(struct tree));//生成非叶子结点 pt->num=fp[i-1]->num+fp[i]->num; pt->Lnode=fp[i-1];pt->Rnode=fp[i]; fp[i]=pt;//w1+w2 sort(fp,N-i);

void main(){

float f[N]={2,3,5,7,11,13,17,19,23,29,31,37,41}; struct tree *head;

inite_node(f,N); //初始化结点 head=construct_tree(f,N);//生成最优树 s[0]=0;

preorder(head,0,'l');//遍历树 }

实验八 群的判定

【实验目的】掌握群的判定方法。

【实验内容】输入代数系统(A,*)的集合A和*运算的运算表,判断(A,*)是否是群。 【实验原理和方法】

(1)用一维数组a[n]存贮集合A。 (2)用二维数组op[n][n]存贮运算表。

(3)根据群的定义,代数系统(A,*)若为群,除运算表已表明运算*封闭外,还应该满足下列三个条件:*运算可结合、有幺元e、 A中任何元素都有逆元。 *运算可结合:

for(i=0;i

for(j=0;j

for(k=0;k

for(l=0;l

if(op[i][y]!=op[x][k])/*op[i][y]代表a*(b*c)*/ { }

printf(\运算是不可结合!\\n\

a[i],a[j],a[k],op[x][k],a[i],a[j],a[k],op[i][y]);

flag=0;/*不满足结合性*/

if(op[i][j]==a[l]) x=l;/*op[i][j] 代表a*b*/ if(op[j][k]==a[l]) y=l;/*op[j][k] 代表b*c*/

if(flag) printf(\运算是可结合!\\n\有幺元e: flag=0;

for(i=0;i

for(j=0;j

printf(\群有幺元%d!\\n\e=a[i]; flag=1; break;

if(op[i][j]!=a[j] || op[j][i]!=a[j]) break;

if(j==N)

}

if(!flag) printf(\群没有幺元!\\n\A中任何元素都有逆元: flag=1;

for(i=0;i

if(flag) printf(\中任何元素都有逆元!\\n\

for(j=0;j

if(op[i][j]==e && op[j][i]==e) break;/*e是幺元*/ {

flag=0;

printf(\中元素%d没有逆元!\\n\

if(j==N)

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库离散数学实验指导书及其答案(3)在线全文阅读。

离散数学实验指导书及其答案(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/420016.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: