access violation c语言,unhandled exception access violation解决思路

C/C++ code#include

#include

#define MAX 20

#define null 0

int o=0;

typedef struct student

{

char code[8];

int score;

char name[15];

}student;

typedef struct bitnode

{

student data;

struct bitnode *lchild,*rchild;

}bitnode,*bitree;

typedef struct {

student *base;

}sqlist;

int insertbst(bitree &t,student e);

int ordertraverse(bitree t,sqlist &l);

int searchbst(bitree t,student key,bitree f,bitree &p);

void listinsert(sqlist &l,student e);

void initsqlist(sqlist &l);

void main()

{

int count=0;

sqlist l;

initsqlist(l);

student data;

bitree t=null;

int counter=0;

bitree x;

int i=0;

printf("enter counte of student\n");

scanf("%d",&count);

while(1<2)

{

printf("please enter info(code(8),name,score)\n");

printf("enter -1 to end\n");

scanf("%s%s%d",&(data.code),&(data.name),&(data.score));

if (data.code[0]=='-'||data.name[0]=='-'||data.score==-1)break;

else {

insertbst(t,data);counter++;}

if (counter==1)x=t;

}

ordertraverse(x,l);

printf("\n");

printf("按照成绩降序排列:\n");

for(i=0;i

printf("学号:%s ,姓名%s ,成绩 %d\n",l.base[i].code,l.base[i].name,l.base[i].score);

}

int searchbst(bitree t,student key,bitree f,bitree &p)

{

if (!t){p=f;return 0;}

else if (key.score==t->data.score){p=t;return 1;}

else if (key.score>=t->data.score)return searchbst(t->lchild,key,t,p);

else return searchbst(t->rchild,key,t,p);

}

int insertbst(bitree &t,student e)

{

bitree s;

bitree p;

int i=0;

if(!searchbst(t,e,NULL,p))

{

s=(bitree)malloc(sizeof(bitnode));

s->data.score=e.score;

s->lchild=s->rchild=NULL;

if(!p)t=s;

else if(e.score>p->data.score)p->lchild=s;

else p->rchild =s;

return 1;

}

else return 0;

}

int ordertraverse(bitree t,sqlist &l)

{

if(t->lchild)

{

ordertraverse(t->lchild,l);

//printf("%d ",t->data);

listinsert(l,t->data);

}

else if(t->rchild)

{

//printf("%d ",t->data);

listinsert(l,t->data);}

if(t->rchild)

{

ordertraverse(t->rchild,l);

}

if(!t->lchild&&!t->rchild)

{

// printf("%d ",t->data.score);

listinsert(l,t->data);

}

return 0;

}

void initsqlist(sqlist &l)

{

}

void listinsert(sqlist &l,student e)

{

static int o=0;

l.base[o++]=e;//access violation

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值