-
大小: 8KB文件類型: .c金幣: 1下載: 0 次發(fā)布日期: 2021-06-18
- 語(yǔ)言: 其他
- 標(biāo)簽:
資源簡(jiǎn)介
電子工業(yè)出版社 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
將若干城市的信息,存入一個(gè)帶頭結(jié)點(diǎn)的單鏈表。結(jié)點(diǎn)中的城市信息包括城市名和城市的位置坐標(biāo)。要求能過(guò)利用城市名和位置坐標(biāo)進(jìn)行有關(guān)查找、插入、刪除、更新等操作。
代碼片段和文件信息
#include?
#include?
#include??????????????//字符串處理函數(shù)的頭文件
#include?????????????//動(dòng)態(tài)存儲(chǔ)分配實(shí)現(xiàn)單元
#include
#include
#include
typedef??struct?CityList?{
????char?CityName[20];??????????//城市名
????float?XY;??????????????????//坐標(biāo)
????int?CityPopulation;??????????//人口
????float?CityArea;??????????????//面積
????struct?CityList?*Next;
?}CityList?*LHead;?????????????//?結(jié)點(diǎn)類型,指針類型
??//***始化操作,創(chuàng)建鏈表?
void?Init(CityList?*LHead)?{???//建立一個(gè)帶頭結(jié)點(diǎn)的單鏈線性表,LHead指向頭結(jié)點(diǎn)
LHead->Next?=?NULL;
}?
??//***插入操作
void?Insert(CityList?*LHead)?{?
system(“cls“);
CityList*?newNode;??????????????????????????????//定義指針結(jié)構(gòu)為cityList型
char?m;
????newNode?=?(CityList*)malloc(sizeof(CityList));?//生成新結(jié)點(diǎn)
if(newNode?==?NULL)?{??????????????????????????//驗(yàn)證空間申請(qǐng)是否成功
printf(“內(nèi)存分配失敗\n“);
return;????????????????????????????????????//若分配內(nèi)存不成功,則返回繼續(xù)分配。
}??
printf(“\n請(qǐng)輸入城市名稱并回車:“);
scanf(“%s“&newNode->CityName);???????????????????//指針的數(shù)據(jù)域
printf(“請(qǐng)輸入城市坐標(biāo)xy并回車:“);??
scanf(“%f%c%f“&newNode->X&m&newNode->Y);???//將城市信息填入新節(jié)點(diǎn)中
printf(“請(qǐng)輸入城市人口并回車:“);
scanf(“%d“&newNode->CityPopulation);
printf(“請(qǐng)輸入城市面積并回車:“);
scanf(“%f“&newNode->CityArea);
while(LHead->Next?!=?NULL)?{
LHead?=?LHead->Next;??????????????????????//如果非空,HLead指針的位置向后移
}
printf(“已成功插入新城市信息!\n“);
newNode->Next?=?LHead->Next;
LHead->Next?=?newNode;???????????????????//將新節(jié)點(diǎn)插入鏈表
}?
??//***刪除操作
void?Delete(CityList?*LHead)?{
system(“cls“);
char?delCity[20];
printf(“\n請(qǐng)輸入要?jiǎng)h除的城市名稱并回車:“);
scanf(“%s“delCity);
if(LHead->Next?==?NULL)?{
????system(“color?9d“);
printf(“您刪除的城市不存在請(qǐng)先創(chuàng)建城市!\n“);
return;
}
while(strcmp(LHead->Next->CityNamedelCity?))?{?????/*?從LHead指向得頭結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)開判斷
?????????????????????????????????????????????????????結(jié)點(diǎn)中的城市名與輸入城市名是否相等?*/
LHead?=?LHead->Next;???????????????????????????//不相等則指針LHead下移,繼續(xù)查找
}
LHead?->Next?=?LHead->Next->Next;?????????????????//相等則刪除此節(jié)點(diǎn)
printf(“以成功刪除此城市信息!\n“);
}
?
??//***更新操作
void?UpdateCity(CityList*?LHead)?{
system(“cls“);
char?CityName[20];
char?m;
printf(“\n請(qǐng)輸入您要更新的城市名稱并回車:“);
scanf(“%s“CityName);
if(LHead->Next?==?NULL)?{
printf(“\n您要更新的城市不存在,請(qǐng)先創(chuàng)建城市!\n“);
????return;
}
while(strcmp(LHead->Next->CityNameCityName))?{??/*?從LHead指向得頭結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)開判斷
?????????????????????????????????????????????結(jié)點(diǎn)中的城市名與輸入城市名是否相等?*/??????????????????
LHead?=?LHead->Next;????????????????????????//當(dāng)不相等則指針LHead下移,繼續(xù)查找
}?
printf(“\n***請(qǐng)輸入城市的新信息***\n“);????????????//輸入城市新信息
printf(“請(qǐng)輸入城市的新名稱并回車:“);
scanf(“%s“LHead->Next->CityName);
printf(“請(qǐng)輸入城市的新坐標(biāo)(XY)并回車:“);
scanf(“%f%c%f“&LHead->Next->X&m&LHead->Next->Y);
printf(“請(qǐng)輸入城市的新人口:“);
scanf(“%d“&LHead->Next->CityPopulation);
printf(“請(qǐng)輸入城市的新面積:“);
scanf(“%f“&LHead->Next->CityArea);
printf(“已成功更新該城市信息!\n“);
}?????
??//***5、正向查找操作
void?FindCity(CityList*?LHead)?{
????system(“cls“);
char?CityName[20];
int?j=0;
printf(“\n請(qǐng)輸入您要查找的城市名稱并回車:“);
scanf(“%s
評(píng)論
共有 條評(píng)論