2

好的,所以我有一个按顺序列出 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 所以这让我想知道如何实现某种类型 =/

4

3 回答 3

2

我认为最好用 enum 来制作星期几。像:

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!

于 2013-08-07T05:37:32.533 回答
1

好的,要正确排序,您需要能够比较两个结构并查看哪个更早。一旦你有了它,你就可以用它来用你最喜欢的排序算法进行排序。

要转换s1and s2,您需要将s1.dayand转换s2.day为一个数字 - 0 代表星期一,1 代表星期二,等等……然后比较这些数字。将日期字符串转换为数字很容易 - 循环遍历您的days数组,并查看其中的哪个条目与s1.day.

于 2013-08-07T05:27:06.900 回答
0

编写一个函数,将星期几作为参数并返回一个 int。返回 1 表示周日,2 表示周一,以此类推。

然后编写另一个以两天为参数的函数,并使用第一个函数返回前一天。

现在使用这两个函数,您可以实现任何标准的排序算法。与排序数字相同。

或者,

您可以拥有另一个与包含您的结构的数组大小相同的数组。然后将结构复制到新数组中,但首先复制所有星期日,然后复制所有星期一,依此类推。

于 2013-08-07T05:37:23.483 回答