使用数组作为环
综述
环是一种比较复杂的数据结构,能够处理需要重复执行从头到尾循环的逻辑。但是环写起来比较让人费解,不易于维护。如果用相对简单的数组来代替环进行处理,效果会好很多。
需求
有这么一个需求:有一个活动,一个星期内任意几天开启,每次开启都是在每天的0点到24点之间的任意一个时间段。一个活动结束后需要获得下一个活动的开启的倒计时。
解答思路
率先找到该结束活动的第一个相邻的开启的活动,取开启时间与当前时间之差,即是倒计时。需要注意的是,当一个星期的最后一次活动结束,则需要回到星期开始的时候重新计算。这时候就需要用到一个环。
解答1
1 #include <stdio.h>
2
3 struct loop {
4 int data;
5 struct loop* next;
6 };
7
8 int main(int argc, char* argv[])
9 {
10 struct loop act[3];
11
12 struct loop head;
13 head.data = 2;
14 head.next = NULL;
15
16 act[0].data = head.data;
17 act[0].next = head.next;
18
19 struct loop node1;
20 node1.data = 4;
21 node1.next = NULL;
22 act[0].next = &act[1];
23
24 act[1].data = node1.data;
25 act[1].next = node1.next;
26
27 struct loop end;
28 end.data = 6;
29</