愿你 发表于 2018-4-29 10:18:00

为什么编译器老是提示我访问冲突??

#include <stdio.h>
#include <stdlib.h>
#define n 6
#define m 2*n-1

typedef struct
{
        int weight;
        int lchild,rchild,parent;
}HNode,*Huffmantree;

void inittree(Huffmantree *T)
{
        *T=(Huffmantree)(sizeof(HNode)*m); //用顺序存储结构来储存每一个结点
        if(!(*T))
        {
                printf("内存分配失败。\n");
        }
        else
        {
                printf("初始化成功");
        }
}
       

void selectmin(Huffmantree T,int k,int p1,int p2)
{
        int i;
        int small1=10000,small2=10000;
        for(i=0;i<k;i++)
        {
                if(T.parent=-1)
                        if(T.weight<small1)
                        {
                                small2=small1;
                                small1=T.weight;
                                p2=p2;
                                p1=i;
                        }
                        else
                        {
                                if(T.weight<small2)
                                {
                                        small2=T.weight;
                                        p2=i;
                                }
                        }
        }
}

void creathuffmantree(Huffmantree *T)
{
        int i,p1,p2;
        for(i=0;i<m;i++)   //初始化m个结点
        {
                T->weight=0;
                T->parent=-1;
                T->lchild=-1;
                T->rchild=-1;
        }
        for(i=0;i<n;i++)//输入n个叶子结点的权重
        {
                printf("请输入第%d个权重:",i+1);
                scanf("%d",&T->weight);
        }
        for(i=n;i<m;i++)
        {
                selectmin(T,i-1,p1,p2);
                T->parent=i;
                T->parent=i;
                T->lchild=p1;
                T->rchild=p2;
                T->weight=T->weight+T->weight;
        }
}

int main()
{
        Huffmantree T;
        printf("请创建一棵哈弗曼树:");
        inittree(&T);
        creathuffmantree(&T);
        return 0;
}





@人造人

人造人 发表于 2018-4-29 10:28:53

愿你 发表于 2018-4-29 10:31:12

人造人 发表于 2018-4-29 10:28


“哈夫曼.exe”: 已加载“E:\哈夫曼\Debug\哈夫曼.exe”,已加载符号。
“哈夫曼.exe”: 已加载“C:\Windows\syswow64\ntdll.dll”,Cannot find or open the PDB file
“哈夫曼.exe”: 已加载“C:\Windows\syswow64\kernel32.dll”,Cannot find or open the PDB file
“哈夫曼.exe”: 已卸载“C:\Windows\syswow64\kernel32.dll”
“哈夫曼.exe”: 已加载“C:\Windows\syswow64\kernel32.dll”,Cannot find or open the PDB file
“哈夫曼.exe”: 已加载“C:\Windows\syswow64\KernelBase.dll”,Cannot find or open the PDB file
“哈夫曼.exe”: 已加载“C:\Windows\syswow64\msvcr100d.dll”,已加载符号。
哈夫曼.exe 中的 0x0020388d 处最可能的异常: 0xC0000005: 写入位置 0x000000b0 时发生访问冲突
哈夫曼.exe 中的 0x0020388d 处有未经处理的异常: 0xC0000005: 写入位置 0x000000b0 时发生访问冲突


为啥我的编译器都没有给我警告

人造人 发表于 2018-4-29 10:33:07

愿你 发表于 2018-4-29 10:31
“哈夫曼.exe”: 已加载“E:\哈夫曼\Debug\哈夫曼.exe”,已加载符号。
“哈夫曼.exe”: 已加载“C:\Win ...

页: [1]
查看完整版本: 为什么编译器老是提示我访问冲突??