小编Gab*_*sky的帖子

指向结构的C指针数组realloc()错误

我正在尝试制作一个霍夫曼代码来练习C编码,并且我仍然保持同样的错误.

让我解释一下代码.首先,它创建下面的结构:

struct sNo {
    int valor;
    char letra;
    struct sNo *esq;
    struct sNo *dir;
};
typedef struct sNo sNo;
Run Code Online (Sandbox Code Playgroud)

然后它创建一个结构数组('否'):

sNo *No;
No = calloc(qtd_no, sizeof(sNo));
Run Code Online (Sandbox Code Playgroud)

它从键盘中读取一个字符串,在该数组中放置字母和它出现的次数.就像下面的代表'abracadabra'一样:

No:    a/5 b/2 r/2 c/1 d/1  
Run Code Online (Sandbox Code Playgroud)

现在,要创建一个Huffman树,我需要创建另一个数组('pNo'),并指向原始数组:

int qtd_pno = qtd_no;
sNo **pNo;
pNo = calloc(qtd_pno, sizeof(sNo*));
for (i = 0; i < qtd_pno; i++){
    pNo[i] = &No[i];    
}
Run Code Online (Sandbox Code Playgroud)

这两个数组看起来像这样:

No:    a/5 b/2 r/2 c/1 d/1  
pNo:   a/5 b/2 r/2 c/1 d/1  
Run Code Online (Sandbox Code Playgroud)

之后,它可以像下面那样对指针数组进行排序而不更改原始指针:

No:    a/5 b/2 r/2 c/1 d/1  
pNo:   c/1 d/1 …
Run Code Online (Sandbox Code Playgroud)

c arrays struct pointers dynamic-allocation

3
推荐指数
1
解决办法
142
查看次数

标签 统计

arrays ×1

c ×1

dynamic-allocation ×1

pointers ×1

struct ×1