int InsertCity( CityList *L, int k, CityRecord ARecord ) { int j; int OK; if(L->Len==(MAX_CITY_NUM-1)) { printf("表满"); OK=FALSE; } if (k<1||k>L->Len+1) { printf("位置错误"); OK=FALSE; } for (j=L->Len;j>=k;j--) L->DataArray[j+1]=L->DataArray[j]; L->DataArray[k]=ARecord; L->Len++; return OK;}int DeleteCity( CityList *L, int k ) { int OK; int i; if(k<1||k>L->Len) { OK=0; } for(i=k;i<L->Len+1;i++) L->DataArray[i]=L->DataArray[i+1]; L->Len--; return OK; }详细解读代码
时间: 2024-03-29 16:42:15 浏览: 54
这段代码实现了对一个城市列表(CityList)的插入和删除操作。其中,CityList是一个结构体,包含了一个CityRecord类型的数组DataArray和数组的长度Len。CityRecord是表示城市记录的数据结构,不在这段代码中给出。
InsertCity函数的作用是在CityList的第k个位置插入一个CityRecord类型的记录ARecord,并返回操作是否成功的标志OK。函数首先判断CityList是否已满,如果已满则返回“表满”错误信息,否则继续执行。接着,判断插入位置k是否合法,如果不合法则返回“位置错误”信息,否则继续执行。接下来,从CityList的最后一个元素开始,将元素逐个后移一个位置,直到第k个位置,然后将ARecord插入到第k个位置,并将CityList的长度Len加1。最后,返回OK标志。
DeleteCity函数的作用是从CityList中删除第k个记录,并返回操作是否成功的标志OK。函数首先判断要删除的位置k是否合法,如果不合法则返回0,否则继续执行。接下来,从第k个位置开始,将后面的元素逐个前移一个位置,直到最后一个元素,然后将CityList的长度Len减1。最后,返回OK标志。
相关问题
void CalcCityStatistic( CityList *L ) { int i; float TotalArea = 0.0, TotalPopulation = 0.0, TotalGDP = 0.0; printf( "\n\n" ); // 统计所有城市的 '面积( 平方公里 )', '人口( 万 )', 和 '地区生产总值( 亿元 )' 平均值 ... for (i = 0; i <= L->Len; i++) { TotalArea += L->DataArray[i].Area; TotalPopulation += L->DataArray[i].Population; TotalGDP += L->DataArray[i].GDP; } // 打印输出统计结果 ... printf( "\t< 城市平均 面积 为 : %.2f ( 平方公里 )>\n", ( TotalArea / ( L -> Len + 1 ) ) ); printf( "\t< 城市平均 人口 为 : %.2f ( 万 )>\n", ( TotalPopulation / ( L -> Len + 1 ) ) ); printf( "\t< 城市平均 GDP 为 : %.2f ( 亿元 )>\n", ( TotalGDP / ( L -> Len + 1 ) ) ); }int FindCityByName( CityList *L, char *s ) { int i; for( i = 0; i < L->Len; i++ ) { if( strcmp( L->DataArray[i].Name, s ) == 0 ) { return i; } } return -1; // 没有找到对应的城市记录} }详细解读这段代码
这段代码定义了两个函数:CalcCityStatistic和FindCityByName。下面分别对这两个函数进行解读。
1. CalcCityStatistic函数
该函数的作用是统计城市列表中所有城市的面积、人口和地区生产总值的平均值,并打印输出结果。
具体实现步骤如下:
1)定义三个变量TotalArea、TotalPopulation和TotalGDP分别表示所有城市的面积、人口和地区生产总值之和,初始值均为0.0。
2)通过for循环遍历城市列表中所有城市,累加每个城市的面积、人口和地区生产总值到相应的变量中。
3)计算所有城市的平均面积、平均人口和平均地区生产总值。
4)使用printf函数打印输出统计结果。
2. FindCityByName函数
该函数的作用是在城市列表中查找指定名称的城市记录,并返回该城市记录的索引值。
具体实现步骤如下:
1)通过for循环遍历城市列表中所有城市,使用strcmp函数比较城市名称是否与指定名称相同,如果相同则返回该城市记录的索引值。
2)如果遍历完整个城市列表后仍未找到指定名称的城市,则返回-1表示没有找到。
inputValue(newVal) { this.isClearBtn = newVal ? true : false; if (this.timer) { clearTimeout(this.timer); } if (!this.inputValue) { this.searchData = []; return; } this.timer = setTimeout(() => { const result = []; this.cityList.map(v => { v.list.forEach((item) => { if (/^[a-zA-Z]+$/.test(item.pinyin) && item.pinyin.toLowerCase().includes(this.inputValue.toLowerCase()) || item.name.includes(this.inputValue)) { result.push(item); } }); }) this.searchData = result; if (this.searchData.length === 0) { this.hasNoData = true; } else { this.hasNoData = false; } }, 500); },
这段代码看起来是一个 Vue.js 组件中的 inputValue 方法。当组件中绑定的输入框的值发生变化时,该方法会被调用。首先,它根据输入框的值来判断是否需要显示清除按钮(将 isClearBtn 属性设置为 true 或 false)。然后,它通过一个定时器来实现防抖功能,避免频繁地执行搜索操作。如果输入框的值为空,则会清空搜索结果并返回。否则,它会遍历城市列表,并将符合条件的城市信息加入到一个名为 result 的数组中。符合条件的城市信息指的是城市名称包含输入框的值或城市名称的拼音包含输入框的值(不区分大小写)。最后,它将 result 数组保存到 searchData 属性中,并根据搜索结果的数量来判断是否需要显示“无搜索结果”的提示信息(将 hasNoData 属性设置为 true 或 false)。
阅读全文