• 大小: 8KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签:

资源简介

电子工业出版社 数据结构课程设计 将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括城市名和城市的位置坐标。要求能过利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。

资源截图

代码片段和文件信息

#include 
#include 
#include              //字符串处理函数的头文件
#include             //动态存储分配实现单元
#include
#include
#include

typedef  struct CityList {
    char CityName[20];          //城市名
    float XY;                  //坐标
    int CityPopulation;          //人口
    float CityArea;              //面积
    struct CityList *Next;
 }CityList *LHead;             // 结点类型,指针类型

  //***始化操作,创建链表 
void Init(CityList *LHead) {   //建立一个带头结点的单链线性表,LHead指向头结点
LHead->Next = NULL;


  //***插入操作
void Insert(CityList *LHead) { 
system(“cls“);
CityList* newNode;                              //定义指针结构为cityList型
char m;
    newNode = (CityList*)malloc(sizeof(CityList)); //生成新结点
if(newNode == NULL) {                          //验证空间申请是否成功
printf(“内存分配失败\n“);
return;                                    //若分配内存不成功,则返回继续分配。
}  
printf(“\n请输入城市名称并回车:“);
scanf(“%s“&newNode->CityName);                   //指针的数据域
printf(“请输入城市坐标xy并回车:“);  
scanf(“%f%c%f“&newNode->X&m&newNode->Y);   //将城市信息填入新节点中
printf(“请输入城市人口并回车:“);
scanf(“%d“&newNode->CityPopulation);
printf(“请输入城市面积并回车:“);
scanf(“%f“&newNode->CityArea);
while(LHead->Next != NULL) {
LHead = LHead->Next;                      //如果非空,HLead指针的位置向后移
}
printf(“已成功插入新城市信息!\n“);
newNode->Next = LHead->Next;
LHead->Next = newNode;                   //将新节点插入链表


  //***删除操作
void Delete(CityList *LHead) {
system(“cls“);
char delCity[20];
printf(“\n请输入要删除的城市名称并回车:“);
scanf(“%s“delCity);
if(LHead->Next == NULL) {
    system(“color 9d“);
printf(“您删除的城市不存在请先创建城市!\n“);
return;
}
while(strcmp(LHead->Next->CityNamedelCity )) {     /* 从LHead指向得头结点的下一个结点开判断
                                                     结点中的城市名与输入城市名是否相等 */
LHead = LHead->Next;                           //不相等则指针LHead下移,继续查找
}
LHead ->Next = LHead->Next->Next;                 //相等则删除此节点
printf(“以成功删除此城市信息!\n“);
}

 
  //***更新操作
void UpdateCity(CityList* LHead) {
system(“cls“);
char CityName[20];
char m;
printf(“\n请输入您要更新的城市名称并回车:“);
scanf(“%s“CityName);
if(LHead->Next == NULL) {
printf(“\n您要更新的城市不存在,请先创建城市!\n“);
    return;
}
while(strcmp(LHead->Next->CityNameCityName)) {  /* 从LHead指向得头结点的下一个结点开判断
                                             结点中的城市名与输入城市名是否相等 */                  
LHead = LHead->Next;                        //当不相等则指针LHead下移,继续查找

printf(“\n***请输入城市的新信息***\n“);            //输入城市新信息
printf(“请输入城市的新名称并回车:“);
scanf(“%s“LHead->Next->CityName);
printf(“请输入城市的新坐标(XY)并回车:“);
scanf(“%f%c%f“&LHead->Next->X&m&LHead->Next->Y);
printf(“请输入城市的新人口:“);
scanf(“%d“&LHead->Next->CityPopulation);
printf(“请输入城市的新面积:“);
scanf(“%f“&LHead->Next->CityArea);
printf(“已成功更新该城市信息!\n“);
}     

  //***5、正向查找操作
void FindCity(CityList* LHead) {
    system(“cls“);
char CityName[20];
int j=0;
printf(“\n请输入您要查找的城市名称并回车:“);
scanf(“%s

评论

共有 条评论