严蔚敏数据结构源代码(数据结构严蔚敏百度百科)
admin 发布:2022-12-19 05:37 159
今天给各位分享严蔚敏数据结构源代码的知识,其中也会对数据结构严蔚敏百度百科进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、关于严蔚敏C语言版数据结构的栈PUSH实现代码
- 2、求严蔚敏教授编写的(《数据结构》C语言版)中赫夫曼算法的完整代码
- 3、严蔚敏的数据结构(C语言版)最短路径算法 代码段:p[w]=p[v];p[w][w]=true;//p[w]=p[v]+[w]是什么意思
关于严蔚敏C语言版数据结构的栈PUSH实现代码
ElemType是笔误S.base=(ElemType *)malloc (S.base, (S.stacksize+STACKINCREMENT)*sizeof(Elemtype));这个是分配一段内存,长度是(S.stacksize+STACKINCREMENT)*sizeof(Elemtype)这么多字节,因为这个函数是重新分配的,所以也要分配表s.base的存储空间
求严蔚敏教授编写的(《数据结构》C语言版)中赫夫曼算法的完整代码
//*************预定义****************
#
include
stdio.h
#
include
malloc.h
#
include
iostream.h
#
include
conio.h
#
include
string.h
#
define
MAX_LENGTH
100
typedef
char
**HuffmanCode;
//**********数据结构*************
typedef
struct
{
int
weight;
//权值
int
parent,lchild,rchild;
//双亲,左右孩子
}HTNode,*HuffmanTree;
//结点和指针
//**********select函数**************
void
Select(HuffmanTree
HT,int
i,int
s1,int
s2)
{
//在建立哈夫曼树的所有结点中选择权值最小的两个结点存放在s1,s2中
int
j,k=1;
while(HT[k].parent!=0)
k++;
s1=k;
for(j=1;j=i;++j)
if(HT[j].parent==0HT[j].weightHT[s1].weight)
s1=j;
k=1;
while((HT[k].parent!=0||k==s1))
k++;
s2=k;
for(j=1;j=i;++j)
if(HT[j].parent==0HT[j].weightHT[s2].weightj!=s1)
s2=j;
}
//**********构建哈夫曼树***********************
void
HuffmanCoding(huffmanTree
HT,hu)
void
HuffmanCoding(HuffmanTree
HT,HuffmanCodeHC,int
*w,int
n)
{
int
m,i,s1,s2,start,c,f;
HuffmanTree
p;
if(n=1)
return;
m=2*n-1;//由得到的叶子数而计算结点总数
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));//分配存储空间
for(p=HT+1,i=1;i=n;++i,++p,++w)
{
p-weight=*w;//为结点初始化权值
coutendl"HT["i"].weight="p-weight"
";
p-parent=0;
p-lchild=0;
p-rchild=0;
}
for(;i=m;++i,++p)
{
p-weight=0;
p-parent=0;
p-lchild=0;
p-rchild=0;
}//初始化双亲和左右孩子,使他们成为孤立的
coutendlendl"哈弗曼树创建的顺序如下:";
for(i=n+1;i=m;++i)
{
Select(HT,i-1,s1,s2);
//调用select函数
HT[s1].parent=i;
HT[s2].parent=i;
HT[i].lchild=s1;
HT[i].rchild=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;//新结点的权值是s1和s2权值的和
coutendl"HT["s1"]
and
HT["s2"]
create";
cout"
HT["i"],
weight="HT[i].weight;
}//每次选择最小的两个结点做左右孩子,权值和为新的结点的权值和,删去连个小的结点
//*********哈夫曼编码*****************
HC=(HuffmanCode)malloc((n+1)*sizeof(char
*));
char
*cd;
cd=(char
*)malloc(n*sizeof(char));
cd[n-1]='\0';
coutendlendl"HuffmanTree编码是:"endl;
for(i=1;i=n;++i)//从底下往上寻回编码
{
start=n-1;
for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)
if(HT[f].lchild==c)
cd[--start]='0';
else
cd[--start]='1';
HC[i]=(char*)malloc((n-start)*sizeof(char));
strcpy(HC[i],cd
今天给各位分享严蔚敏数据结构源代码的知识,其中也会对数据结构严蔚敏百度百科进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
);printf("\nHT[%d]
node's
Huffman
code
is:
%s",i,HC[i]);
}
free(cd);
}
//****************主函数部分********************
void
main()
{
HuffmanTree
HT;
HuffmanCode
HC;
int
n,i;
int
*w,W[MAX_LENGTH];
cout"***********本实验实现的是哈夫曼树的建立以及编码*********";//交互信息
coutendl"请输入哈弗曼树元素的个数:
";
cinn;
for(i=0;in;++i)
{
cout"请输入第
"i+1"个元素的权值(0~255的整数):
";
cinW[i];
}
w=W;
HuffmanCoding(HT,HC,w,n);
getch();
}
个人觉得这个有点长。。不知道对不对。看看吧~
严蔚敏的数据结构(C语言版)最短路径算法 代码段:p[w]=p[v];p[w][w]=true;//p[w]=p[v]+[w]是什么意思
二维数组P中保存的是v0到各个点的最短路径。在v行中,值为true的列连起来,就是v0到v的最短路径。因为v0到w点的最短路径是v0到v的最短路径在加上v,w,所以w列先复制所有的v列的值,然后在将p[w][w]=true。此时w行中所有值为true列,就是v0到w的最短路径
关于严蔚敏数据结构源代码和数据结构严蔚敏百度百科的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-20优化百度搜索结果怎么看,优化百度搜索结果怎么看不了
- 05-20优化百度标注点速度,优化百度标注点速度的方法
- 05-20优化百度搜索结果,百度搜索引擎优化指南20
- 05-20百度官网优化,百度上做优化
- 05-20百度如何优化,百度如何优化网页
- 05-19百度搜索排名,百度搜索排名与点击有关吗
- 05-19百度浏览器,百度浏览器历史记录怎么恢复
- 05-19百度推广网站,百度推广网站公司
- 05-19百度seo优化公司,百度seo公司整站优化
- 05-19百度搜索排名,百度搜索排名优化推广路径
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接