c语言实现城市链表,C语言求助啊!下面的代码谁能帮我看看?谢谢啊

C语言求助啊!下面的代码谁能帮我看看?谢谢啊

答案:1  信息版本:手机版

解决时间 2021-05-15 01:34

已解决

2021-05-14 07:39

#include

#include

#include

#include

#include

char city[20];

typedef struct q

{ char a[20];

int x;

int y;

struct q *prior;

struct q *next;

}NODE,*list;

list create();

void find(list);

void pos(list);

void add(list);

void dele(list);

void show(list);

void print();

void main()

{ list L;

int t;

char c='y';

while(c=='y'||c=='Y')

{system("cls");

print();

printf("请输入:");

scanf("%d",&t);

switch(t)

{ case 1: L=create(); break;

case 2: find(L); break;

case 3: add(L); break;

case 4: dele(L); break;

case 5: pos(L); break;

case 6: show(L);break;

}

printf("输入Y则继续操作,输入其他则结束!\n");

c=getch();

}

}

void print()

{

printf("*******************************************************************************\n");

printf("**********************<>*********************************************\n");

printf("*******************************************************************************\n");

printf("*********按1:输入城市信息                          按2:查找城市信息************\n");

printf("*******************************************************************************\n");

printf("*********按3:增加一个城市信息                      按4:删除一个城市信息********\n");

printf("*******************************************************************************\n");

printf("*********按5:查找小于等于某距离的所有城市信息      按6:显示所有城市信息********\n");

printf("*******************************************************************************\n");

printf("*******************************************************************************\n");

printf("*******************************************************************************\n");

}

list create()

{ NODE *p1,*p2;

list L;

int t1,t2;

p2=(NODE *)malloc(sizeof(NODE));

L=p2;

printf("请输入城市的横坐标x与纵坐标y(若x或y输入为负数则表示结束输入)\n");

printf("请输入X坐标:x=");

scanf("%d",&t1);

printf("请输入Y坐标:y=");

scanf("%d",&t2);

while(t1>=0&&t2>=0)

{ p1=(NODE *)malloc(sizeof(NODE));

p1->x=t1;

p1->y=t2;

printf("\n请输入城市的名字:");

scanf("%s",p1->a);

p2->next=p1;

p1->prior=p2;

p2=p1;

p2->next=NULL;

system("cls");

printf("请输入城市的横坐标x与纵坐标y(若x或y输入为负数则表示结束输入)\n");

printf("请输入X坐标:x=");

scanf("%d",&t1);

printf("请输入Y坐标:y=");

scanf("%d",&t2);

}

p1=L->next;

while(p1!=NULL)

{   printf("城市:%s  ",p1->a);

printf("坐标:(%d,%d)\n",p1->x,p1->y);

p1=p1->next;

}

return L;

}

void find(list L)

{ NODE *p;

int leap=0;

p=(NODE *)malloc(sizeof(NODE));

printf("请输入所要查找的城市的名字");

scanf("%s",city);

p=L->next;

while(p!=NULL)

{

if(strcmp(p->a,city)==0)

{

printf("城市:%s  ",p->a);

printf("坐标为:(%d,%d)\n",p->x,p->y);

leap=1;

}

p=p->next;

}

if(leap==0)

printf("未找到");

}

void pos(list L)

{ int d,t1,t2,leap=0;

long double h;

NODE *t;

t=(NODE *)malloc(sizeof(NODE));

t=L->next;

printf("请输入城市的坐标\n");

printf("\n请输入x坐标:");

scanf("%d",&t1);

printf("\n请输入y坐标:");

scanf("%d",&t2);

printf("\n请输入距离d=");

scanf("%d",&d);

printf("距离小于d的城市有\n");

while(t!=NULL)

{ h=sqrt(pow(fabs(t->x-t1),2)+pow(fabs(t->y-t2),2));

if(h>=0&&h<=d)

{printf("城市:%s",t->a);

printf("坐标:(%d,%d)\n",t->x,t->y);

leap=1;}

t=t->next;

}

if(leap==0)

printf("未找到小于该距离的城市!");

}

void add(list L)

{ NODE *p,*p1;

int leap=0;

p=p1=(NODE *)malloc(sizeof(NODE));

//char city[20];

printf("你想在那个城市名后增加:");

scanf("%s",city);

p=L->next;

while(p!=NULL)

{

if(strcmp(p->a,city)==0)

{

printf("请输入要插入城市的名字city=");

scanf("%s",p1->a);

printf("\n请输入要插入城市的X坐标x=");

scanf("%d",&p1->x);

printf("\n请输入要插入城市的Y坐标y=");

scanf("%d",&p1->y);

p1->next=p->next;

p1->prior=p->next->prior;

p->next->prior=p1;

p->next=p1;

leap=1;

}

p=p->next;

}

p1=L->next;

while(p1!=NULL)

{   printf("城市:%s  ",p1->a);

printf("坐标:(%d,%d)\n",p1->x,p1->y);

p1=p1->next;

}

if(leap==0)

printf("\n\n未找到该城市的名字!\n");

}

void dele(list L)

{ NODE *p,*p1;

int leap=0;

p=p1=(NODE *)malloc(sizeof(NODE));

//char city[20];

printf("你想删除那个城市的名字:");

scanf("%s",city);

p=L->next;

while(p!=NULL)

{

if(strcmp(p->a,city)==0)

{p->prior->next=p->next;

p->next->prior=p->prior;

printf("删除成功!\n");

p1=L->next;

while(p1!=NULL)

{

printf("城市:%s  ",p1->a);

printf("坐标:(%d,%d)\n",p1->x,p1->y);

p1=p1->next;

}

leap=1;

}

if(leap==1) break;

p=p->next;

}

if(leap==0)

printf("未找到删除对象,删除失败!");

}

void show(list L)

{NODE *p;

p=(NODE *)malloc(sizeof(NODE));

p=L->next;

while(p!=NULL)

{

printf("城市:%s  ",p->a);

printf("坐标:(%d,%d)\n",p->x,p->y);

p=p->next;

}

}

就是这个代码。可以运行的可以。但是菜单所显示的功能是不能实现的。求助啊 谢谢

最佳答案

2021-05-14 09:05

代码呢?

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值