好的,所以我有一个数组,按顺序列出5个工作日:
char *days[5]={"Monday","Tuesday","Wednesday","Thursday","Friday"};
现在我有一些结构数组,其中一个元素是一周的日子,它们不是有序的,它们是随机顺序,如:
d[0].day is "Thursday"
d[1].day is "Monday"
d[2].day is "Wednesday"
现在不方便的是,日子不是按字母顺序排列的:p因此让我想知道如何实现某种类型= /
答案 0 :(得分:2)
我认为用枚举制作星期几会更好。像:
enum Days{
Monday = 1,
Tuesday,
Wednesday,
Thursday,
Friday
}
然后按功能
获取日期数据void printDays(enum d,char * buffer)
{
const char *daysName[] = {"Monday","Tuesday","Wednesday","Thursday","Friday"};
memcpy(buffer,daysName[d-1]);
}
然后当你使用
d[0].day is "Thursday"
d[1].day is "Monday"
d[2].day is "Wednesday"
这很容易排序。实际上它只是存储1,2,3,4,5!
答案 1 :(得分:1)
好的,要正确排序,你需要能够比较两个结构,看看哪个更早。完成后,您可以使用它来使用您喜欢的排序算法进行排序。
要转换s1
和s2
,您需要将s1.day
和s2.day
转换为数字 - 0表示星期一,1表示星期二等等...然后比较数字。将日期字符串转换为数字非常简单 - 循环遍历days
数组,并查看其中的哪个条目与s1.day
相同。
答案 2 :(得分:0)
编写一个函数,该函数将一周中的某一天作为参数并返回一个int。周日返回1,周一返回2,依此类推。
然后编写另一个需要两天作为参数的函数,并使用第一个函数返回前一天。
现在使用这两个函数可以实现任何标准排序算法。与排序数字相同。
或者,
您可以使用与包含结构的数组相同大小的另一个数组。然后将结构复制到新数组中,但首先复制所有星期日,然后复制所有星期一,依此类推。