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);
} 展开
#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);
} 展开
展开全部
for(i=1;i<=4;i++)
{
L.head=NULL;
//这里,你每次循环赋值都将链表头置空??
L.head=NULL; 这条语句挪到main函数add(L);之前。
{
L.head=NULL;
//这里,你每次循环赋值都将链表头置空??
L.head=NULL; 这条语句挪到main函数add(L);之前。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好,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;
}
若有疑问,请追问,满意请采纳
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
}
}
{
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;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询