C++中编写的程序运行时提示内存为只读 大侠们帮我看看嘛,谢谢

#include<iostream.h>#include<string.h>#include<math.h>structnode{charcity[5];floatx;f... #include<iostream.h>
#include<string.h>
#include<math.h>
struct node
{
char city[5];
float x;
float y;
node * next;
};
struct list
{
node * head;
};
void add(list &L)
{
node *s,*r;
int i;
for(i=1;i<=4;i++)
{
L.head=NULL;
s=new node;
cout<<"city:";
cin>>s->city;
cout<<"x:";
cin>>s->x;
cout<<"y:";
cin>>s->y;

if(L.head==NULL)
{
L.head=s;
r=s;
}
else
{
r->next=s;
r=s;
}
}
}
void find1(list &L)
{
node *p;
char a[5];
cout<<"请输入查找的城市名:";
cin>>a;
cout<<"x y"<<endl;
p=L.head;
while(p!=NULL)
{
if((strcmp(p->city,a))==0)
{
cout<<p->x<<" "<<p->y<<endl;
}
p=p->next;
}
}
void find2(list &L)
{
float a,b,c;
node *p;
cout<<"请给定一个位置坐标:";
cin>>a>>b;
cout<<"请给定一个距离:";
cin>>c;
p=L.head;
cout<<"city"<<endl;
while(p!=NULL)
{
if((((p->x)-a)*((p->x)-a)+((p->y)-b)*((p->y)-b))<=c)
{
cout<<p->city<<endl;
}
p=p->next;
}
}
void main()
{
list L;
add(L);
find1(L);
find2(L);
}
展开
 我来答
bhtzu
2013-09-29 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4156万
展开全部
for(i=1;i<=4;i++)
{
L.head=NULL;
//这里,你每次循环赋值都将链表头置空??
L.head=NULL; 这条语句挪到main函数add(L);之前。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6a6aa8c
2013-09-29 · TA获得超过1483个赞
知道小有建树答主
回答量:707
采纳率:100%
帮助的人:733万
展开全部

你好,add函数定义有问题,修改如下:

void add(list &L)
{
node *s,*r;
int i;
L.head=NULL;
for(i=1;i<=4;i++)
{
s=new node;
cout<<"city:";
cin>>s->city;
cout<<"x:";
cin>>s->x;
cout<<"y:";
cin>>s->y;

if(L.head==NULL)
{
L.head=s;
r=s;
}
else 
{
r->next=s;
r=s;
}
}

r->next=NULL;    //要赋空,否则后面的判断是会出问题的
r=s;
}

若有疑问,请追问,满意请采纳

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HPEY651301458
2013-09-29 · TA获得超过195个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:109万
展开全部
void add(list &L)
{
node *s,*r;
//r=new node;//加一句这个试试,反正我加了以后没出问题
int i;
for(i=1;i<=4;i++)
{
L.head=NULL;
s=new node;
cout<<"city:";
cin>>s->city;
cout<<"x:";
cin>>s->x;
cout<<"y:";
cin>>s->y;
if(L.head==NULL)
{
L.head=s;
r=s;
}
else
{
r->next=s;
r=s;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式