| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 408 人关注过本帖
标题:堆的问题错在哪里??
只看楼主 加入收藏
哈哈鱼
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-3-12
收藏
 问题点数:0 回复次数:2 
堆的问题错在哪里??
#include<stdio.h>
#include<stdlib.h>
struct heap{
int*data;
//定义堆的数组域的指针
int length;
//定义堆的长度指针
int rear;
//定义堆尾指针
};//定义一个堆类型
void inint(struct heap**bt,int n)
//初始化堆
{
(*bt)->data=malloc(sizeof(int)*n);
//分配堆空间并使头指针指向此段内存
(*bt)->length=0;
(*bt)->rear=0;
}
void insert(struct heap *bt,int x)//向堆中插入一个新的元素
{
int i,temp,j;
bt->rear++;
bt->length++;
bt->data[bt->rear]=x;
//将新元素赋到堆尾
i=bt->rear;
for(;i!=1;){
j=i/2;
if(bt->data[i]>bt->data[j]){
temp=bt->data[i];
bt->data[i]=bt->data[j];
bt->data[j]=temp;
i=j;
}
else break;
}
//调整新的堆的排列,使其符合大根堆的特点
}
void print(struct heap* bt)
{
int i;
if(bt){
for(i=1;i<=bt->length;++i)
printf("%d",bt->data[i]);
}
}
main()
{
struct heap*bt;
int a[5]={2,4,6,23,32};
int i,n;
scanf("%d",&n);
inint(&bt,n);
for(i=0;i<5;++i)
insert(bt,a[i]);
print(bt);
printf("\n");
free(bt);
}
这个程序不知道为什么在TC下运行正确,但是在VC下却说指令引用了不能写的内存。这个程序调用内存到底错在哪里??
搜索更多相关主题的帖子: include insert 空间 元素 
2006-05-21 17:43
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 

在我机子上出现CPU指令错误的警告!不知道为什么?
其实我以前写的程序有的也是这样的警告,是不是程序上存在错误?还是AMD的CPU与INTER的CPU存在着不同(在我同学的机子上运行不会弹出警告)。


2006-05-21 18:33
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
struct heap{
int *data;
int length;
int rear;
};
void inint(struct heap*bt,int n)//bt是一级指针
{
(bt)->data=malloc(sizeof(int)*n);
(bt)->length=0;
(bt)->rear=0;
}
void insert(struct heap *bt,int x)
{
int i,temp,j;
bt->rear++;
bt->length++;
bt->data[bt->rear]=x;
i=bt->rear;
for(;i!=1;){
j=i/2;
if(bt->data[i]>bt->data[j]){
temp=bt->data[i];
bt->data[i]=bt->data[j];
bt->data[j]=temp;
i=j;
}
else break;
}
}
void print(struct heap* bt)
{
int i;
if(bt){
for(i=1;i<=bt->length;++i)
printf("%d,",bt->data[i]);
}
}
main()
{
struct heap bt;//去掉*号
int a[5]={27,40,16,23,11};
int i,n;
scanf("%d",&n);
inint(&bt,n);
for(i=0;i<5;++i)
insert(&bt,a[i]);//加&
print(&bt); //加&
printf("\n");
free(bt.data);//加.data
}

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-21 20:01
快速回复:堆的问题错在哪里??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032485 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved