永发信息网

麻烦你再帮我看看这个,谢谢。

答案:1  悬赏:40  手机版
解决时间 2021-07-31 21:54


#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct Node{
char data1[20];
int data2,data3;
struct Node *next;
}Node,*LinkList;

void Initlinklist(LinkList *l)
{
*l=(LinkList)malloc(sizeof(Node));
(*l)->next=NULL;
}
void CreateFromTail(LinkList L)
{
Node *r, *city;
char a[10][20]={'\0'},*b;
int i=0,flag=1,c,d;
r=L;
while(flag)
{
printf("input the City:\n");
gets(a[i]);
printf("input the site:\n");
scanf("%d%d",&c,&d);
if(strcmp(a[i],"$"))
{
city=(Node*)malloc(sizeof(Node));
strcpy(city->data1,a[i]);
city->data2=c;
city->data3=d;
r->next=city;
r=city;
}
else{
flag=0;
r->next=NULL;
}
if(i>9){//跳出
flag=0;
r->next=NULL;
}
i++;
}
}

int search()
{
LinkList L;
Node *p;
int flag=0;
int i;
char c,a[20];
Initlinklist(&L);
printf("input the element,end by '$'\n");
CreateFromTail(L);
p =L->next;
printf("Which city are you want to search:\n");
gets(a);
while(p!=NULL)
{
if(!strcmp(p->data1,a)){
printf("%s's site is:(%d,%d)",p->data1,p->data2,p->data3);
p=NULL;
break;
}
p=p->next;
}
}

int count()
{
LinkList L;
Node *p,*q;
int flag=0;
int i,e,f,g,h;
char c;
Initlinklist(&L);
printf("input the element,end by '$'\n");
CreateFromTail(L);
p =L->next;
printf("Input the site:\n");
scanf("%d%d",&e,&f);
printf("Input the distance:\n");
scanf("%d",&g);
while(p!=NULL)
{
f=e+f+g;
g=p->data2+p->data3;
if(g<=f){
printf("%s's site is:(%d,%d)\n",p->data1,p->data2,p->data3);
h++;
}
p=p->next;

}
printf("There are %d cities to meet the requirements\n",h);
}

void main()
{
int a;
printf("search or count:\n1.search\t2.count\n");
scanf("%d",&a);
if(a==1)
search();
else if(a==2)
count();
else
printf("error program exit!");
getch();
}

最佳答案

不好意思. 早上有事. 帮你改好了,加粗的地方.你看看.


在CreateFromTail函数中.我改成输入城市名如果是$就退出. 照你原本的写法,如果城市名为$的话,还必须输入坐标才结束. 所以稍微改动了下.




#include<stdio.h>
#include <conio.h>
#include<malloc.h>
#include<string.h>


typedef struct Node{
char data1[20];
int data2,data3;
struct Node *next;
}Node,*LinkList;


void Initlinklist(LinkList *l)
{
*l=(LinkList)malloc(sizeof(Node));
(*l)->next=NULL;
}


void CreateFromTail(LinkList L)
{
Node *r, *city;
char a[10][20]={'\0'},*b;
int i=0,flag=1,c,d;
r=L;
while(flag)
{
getchar(); //吸收上一次输入的回车符.
printf("input the City:\n");
gets(a[i]);
if(strcmp(a[i],"$"))
{
printf("input the site:\n");
scanf("%d%d",&c,&d);
city=(Node*)malloc(sizeof(Node));
strcpy(city->data1,a[i]);
city->data2=c;
city->data3=d;
r->next=city;
r=city;
}
else{
flag=0;
r->next=NULL;
}
if(i>9){//跳出
flag=0;
r->next=NULL;
}
i++;
}
}


//函数并没有返回任何数据. 所以用void.


void search()
{
LinkList L;
Node *p;
int flag=0;
int i;
char c,a[20];
Initlinklist(&L);
printf("input the element,end by '$'\n");
CreateFromTail(L);
p =L->next;
printf("Which city are you want to search:\n");
gets(a);
while(p!=NULL)
{
if(!strcmp(p->data1,a)){
printf("%s's site is:(%d,%d)",p->data1,p->data2,p->data3);
p=NULL;
break;
}
p=p->next;
}
}


//同上.


void count()
{
LinkList L;
Node *p,*q;
int flag=0;
int i,e,f,g,h=0; //h用来计数所以需要要初始化.
char c;
Initlinklist(&L);
printf("input the element,end by '$'\n");
CreateFromTail(L);
p =L->next;
printf("Input the site:\n");
scanf("%d%d",&e,&f);
printf("Input the distance:\n");
scanf("%d",&g);
while(p!=NULL)
{
f=e+f+g;
g=p->data2+p->data3;
if(g<=f){
printf("%s's site is:(%d,%d)\n",p->data1,p->data2,p->data3);
h++;
}
p=p->next;


}
printf("There are %d cities to meet the requirements\n",h);
}


void main()
{
int a;
printf("search or count:\n1.search\t2.count\n");
scanf("%d",&a);
if(a==1)
search();
else if(a==2)
count();
else
printf("error program exit!");
getch();
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
结婚敬酒时新娘需要挽着新郎的手吗?
婴儿爱哭怎么办?
紧急求助!!!急急急感情方面
TX公益图标点亮以后在那里显示
问道里面的元婴和血婴是系统规定的还是自己可
常宁市衡阳多乐士(青阳北路形象店)在哪里啊,
QQ飞车紫钻怎么充啊
调浏意思的意思是什么,算命里面常说“天哭”
请问这是什么东东——C:\WINDOWS\system32\NV
开垦土地有什么好处
穿越火线顶级是啥
年青就是要虚伪?
东西湖区武汉市东西湖明皓口腔门诊部地址是什
请问你们知道所有百合花的花语吗?(所有颜色
关于篮球位置
推荐资讯
有哪个学校在学生初三学年时因为被处分而得不
求值域的函数题
天龙八部彩色字体
怎样用移动手机开QQ黄钻?
交了一年的保险想退
建筑工程中怎么把理论配合比调成施工配合比
电脑性能怎么看?
误推了氯化钾。会怎样?会有什么不良反映,多
QQ飞车的喷的技巧
人如果生气了,怎么样才能消气啊
万人迷后 家园还有什么头衔、?
拍拍店铺怎么开
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?