好的,我有一个数组,按顺序列出5个工作日:
char *days[5]={"Monday","Tuesday","Wednesday","Thursday","Friday"};现在,我有了一些结构数组,其中一个元素是一周中的几天,它们不是按顺序排列的,它们是随机排列的,例如:
d[0].day is "Thursday"
d[1].day is "Monday"
d[2].day is "Wednesday"现在,不方便的是,天不按alpha顺序排列:p,这让我想知道如何实现某种=/。
发布于 2013-08-07 05:37:32
我认为最好把一周中的每一天都搞清楚。比如:
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"这是很容易排序的.It实际上只是存储1,2,3,4,5!
发布于 2013-08-07 05:27:06
好的,要正确地排序,您需要能够比较两个结构,并查看哪个是前面的结构。一旦你有了它,你可以使用它与你最喜欢的排序算法排序。
要转换s1和s2,您需要将s1.day和s2.day转换为数字--星期一为0,星期二为1,等等.然后比较这些数字。将一个天字符串转换为一个数字在days数组上很容易循环,并查看其中的哪个条目与s1.day相同。
发布于 2013-08-07 05:37:23
编写一个函数,该函数以一周中的一天为参数并返回一个int。周日返回1,星期一返回2,以此类推。
然后编写另一个以两天为参数的函数,并使用第一个函数返回前一天。
现在,使用这两个函数,您可以实现任何标准排序算法。和分类号码一样。
或,
您可以有另一个与包含您的结构的数组大小相同的数组。然后将结构复制到新数组中,但首先复制所有周日,然后复制所有星期一,以此类推。
https://stackoverflow.com/questions/18095187
复制相似问题