虽然这代码没问题但不让写一样的,要怎么改一改呢
include<stdio.h>
include<malloc.h>
include<string.h>
define N 30
define M 2 * N - 1
define MAX 99999
typedef struct {
int weight;
int parent;
int LChild;
int RChild;
}HTNode, HuffmanTree[M + 1];
HuffmanTree ht;
void Select(HuffmanTree ht, int n, int* s1, int* s2) {
int i, min1 = MAX, min2 = MAX;
*s1 = 0;
*s2 = 0;
for (i = 1; i <= n; i++) {
if (ht[i].parent == 0) {
if (ht[i].weight < min1) {
min2 = min1;
*s2 = *s1;
min1 = ht[i].weight;
*s1 = i;
}
else if (ht[i].weight < min2) {
min2 = ht[i].weight;
*s2 = i;
}
}
}
}
void CrtHuffmanTree(HuffmanTree ht, int w[], int n) {
int i;
for (i = 1; i <= n; i++) {
ht[i].weight = w[i - 1];
ht[i].parent = 0;
ht[i].LChild = 0;
ht[i].RChild = 0;
}
int m = 2 * n - 1;
for (i = n + 1; i <= m; i++) {
ht[i].weight = 0;
ht[i].parent = 0;
ht[i].LChild = 0;
ht[i].RChild = 0;
}
int s1, s2;
for (i = n + 1; i <= m; i++) {
Select(ht, i - 1, &s1, &s2);
ht[i].weight = ht[s1].weight + ht[s2].weight;
ht[s1].parent = i;
ht[s2].parent = i;
ht[i].LChild = s1;
ht[i].RChild = s2;
}
}