题目描述:
将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城市名,城市的位置坐标。要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。并且实现1)给定一个城市名,返回其位置坐标;2)给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。
分析:比较基础的链表题目。主要分为以下几个步骤:初始化并创建列链表,输入有用信息,查找相关信息并输出。
本次实验采用C++面向对象特性进行编写,为方便同学理解,同时编写C语言代码,注意:本次完整代码在10月16号后才全部公开,并提供所有的源文件与实验报告,以下的代码均提供主要思路,未实现运行。
C++版:主要分为3个模块,linkList.h头文件,linkList.cpp函数文件,Main.cpp测试文件,运行环境为VS2019
“linkList.h” 主要是函数大纲与类的创建。
#pragma once #ifndef linkLIST_H #define linkLIST_H #include#include #include using namespace std; struct lip{ char city_name[20]; double jd; double wd; double distance; }; typedef struct link { lip data; struct link* next; }Node; class linkListClass { Node* head; public: linkListClass(); ~linkListClass(); void CreateListR(); void DispList(); int ListLength(); bool Search_city(char s[]); double Distance_city(double m, double n, double x, double y) { return sqrt((m - x) *(m-x) + (n - y)*(n-y)); } bool Search_distance(double x, double y, double m); }; #endif // !linkLIST_H
“linkList.cpp” 主要函数暂不提供。
Main.cpp暂不提供。
下面是C语言代码,主要函数已编写完成。
#include#include #include #include struct lip{ char city_name[50]; float jd; float wd; }; typedef struct Node{ lip data; struct Node *next; }LNode,*linkList; void Initlink(linkList *L){ (*L)=(linkList)malloc(sizeof(LNode)); (*L)->next=NULL; } void Creatlink(linkList L){ int i; double x,y; linkList p; for(i=0;i<30;i++){ p=(linkList)malloc(sizeof(LNode)); scanf("%s",p->data.city_name); scanf("%f%f",&p->data.jd,&p->data.wd); p->next=L->next; L->next=p; } } void Displink(linkList L){ linkList p; p=L->next; while(p!=NULL){ printf("%s %f %fn",p->data.city_name,p->data.jd,p->data.wd); p=p->next; } } void Search(linkList L,char s[]){ linkList p; p=L->next; while(p!=NULL){ if(strcmp(p->data.city_name,s)==0){ printf("%f %f",p->data.jd,p->data.wd); break; } p=p->next; } } double dis(double a,double b,double c,double d){ return sqrt((a-c)*(a-c)+(b-d)*(b-d)); } void Distance(linkList L,double x,double y,double m){ linkList p; p=L->next; while(p!=NULL){ if(dis(p->data.jd,p->data.wd,x,y) data.city_name); } p=p->next; } } int main(){ ... ... return 0; }



