当前位置:首页 > 代码 > 正文

数据结构c语言版严蔚敏源代码(数据结构严蔚敏代码实现)

admin 发布:2022-12-19 13:35 124


本篇文章给大家谈谈数据结构c语言版严蔚敏源代码,以及数据结构严蔚敏代码实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

求严蔚敏教授编写的(《数据结构》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

本篇文章给大家谈谈数据结构c语言版严蔚敏源代码,以及数据结构严蔚敏代码实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

);

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语言版》 完整源代码(严蔚敏、吴伟民编著)

整理严蔚敏全部数据结构资料:包括电子书、习题集答案、纯C代码、教学讲义和课件.还有数据结构笔记和数据结构1800复习例题与答案。

下载地址1:

下载地址2:

下载地址3:

这个 地址你去下载把 CSDN

关于严蔚敏C语言版数据结构的栈PUSH实现代码

ElemType是笔误S.base=(ElemType *)malloc (S.base, (S.stacksize+STACKINCREMENT)*sizeof(Elemtype));这个是分配一段内存,长度是(S.stacksize+STACKINCREMENT)*sizeof(Elemtype)这么多字节,因为这个函数是重新分配的,所以也要分配表s.base的存储空间

跪求,数据结构堆排序的完整代码?严蔚敏版本的。要求用书上的算法实现,c语言版本的。

哥们,这是严蔚敏的数据结构书上的堆排序算法,代码如下,试一下吧

堆排序heapsort(第26行至37行)首先调用建堆函数buildheap,将n个待排序记录建立一个初始堆,然后重复执行n-1次元素交换(第32行至34行)和siftdown进行堆排序。init和print函数与图8.1相同。为节约篇幅,只给出其函数原型,略去其实现。

1 #include stdlib.h

2 #define N 8

3 int a[N];

4 void init()

5 void print()

6 int siftdown(int i,int n)

7 {

8 int t;

9 int j = 2*i + 1;

10 while (j n) {

11 if ((j (n-1)) (a[j] a[j+1])) j++;

12 if (a[i] = a[j]) return 0;

13 t = a[i];

14 a[i] = a[j];

15 a[j] = t;

16 i = j;

17 j = 2*i + 1;

18 }

19 }

20 void buildheap(int n)

21 {

22 int i;

23 for (i = n/2-1;i = 0;i--)

24 siftdown(i,n);

25 }

26 void heapsort(int n)

27 {

28 int i,t,j;

29 buildheap(n);

30 for (i = 0;i n;i++) {

31 print(N);

32 t = a[0];

33 a[0] = a[n-i-1];

34 a[n-i-1] = t;

35 siftdown(0,n-i-1);

36 }

37 }

38 void main()

39 {

40 init(N);

41 print(N);

42 heapsort(N);

43 print(N);

44 }

严蔚敏的数据结构(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的最短路径

数据结构c语言版严蔚敏源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据结构严蔚敏代码实现、数据结构c语言版严蔚敏源代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/8881.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载