为什么编译器老是提示我访问冲突??
#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
“哈夫曼.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:31
“哈夫曼.exe”: 已加载“E:\哈夫曼\Debug\哈夫曼.exe”,已加载符号。
“哈夫曼.exe”: 已加载“C:\Win ...
页:
[1]