Laishiji 2017-10-15 15:41 采纳率: 100%
浏览 924
已结题

数据结构C语言版。编译器没报错。不知道哪里有问题。求大神解答

//若干城市的信息存入一个带头结点的单链表,节点中的城市信息包括城市名、城市的位置坐标。要求
//(1)给定一个城市名,返回其位置坐标。(2)给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市
#include
#include
#include
#include
#define Null 0

typedef struct node
{
char name[20];
float x,y;
struct node *next;
} Node,*CITY;//定义单链表结点

void InitList(CITY L)
{
L=(CITY)malloc(sizeof(Node));
L->next=Null;
}//初始化单链表

void CreateList(CITY L)
{
Node r,*s;
char city[20];
float a,b;
int flag=1;
r=L;
printf("当输入$时表示输入结束");
while(flag)
{
printf("请输入城市名:");
scanf("%s",city);
if(strcmp("$",city)!=0)
{ printf("请输入该城市的坐标x和y:");
scanf("%f%f",&a,&b);
s=(Node
)malloc(sizeof(Node));
strcpy(s->name,city);
s->x=a;
s->y=b;
r->next=s;
r=s;
}
else
{
flag=0;
r->next=Null;
}
}
}//尾插法建立单链表

void FindCoordinate(CITY L,char c[])
{
Node *p;
p=L->next;
while(strcmp(p->name,c)!=0)
{
p=p->next;
}
printf("该城市的位置坐标为%f,%f",p->x,p->y);
}//查找结点信息

void FindCity(CITY L,float a,float b,float D)
{
Node *p;
float d;
p=L->next;
printf("符合条件的有以下城市:\n");
while(p->next!=Null)
{
d=sqrt(pow((p->x)-a,2)+pow((p->y)-b,2));
if(d<=D)
printf("%s",p->name);
p=p->next;
}
}

int main()
{
CITY L;
InitList(L);
CreateList(L);
float a,b,D;
char Name[20];
printf("您想要查找的城市是:");
scanf("%s",Name);
FindCoordinate(L,Name);
printf("请输入坐标P的值以及距离D:");
scanf("%f%f%f",&a,&b,&D);
FindCity(L,a,b,D);
return 0;
}

  • 写回答

2条回答 默认 最新

  • ChildHood1949 2017-10-16 04:56
    关注

    r=L;类型都不一样;r是结构体对象,L是结构体对象指针;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?