我创建一个结构来保存类(class)表:
struct timetable_t {
int id;
int weekday;
float start_time;
float end_time;
int start_week;
int end_week;
int is_even;
char* name;
char* location;
};
typedef struct t_class {
struct timetable_t t;
struct t_class* pre;
struct t_class* next;
}CLASS;
以下是数据:
static struct timetable_t timetable[] = {
{113172, 1, 10.10, 12.00, 3, 17, 2, "PE", "B-410"},
{121172, 1, 14.00, 15.50, 1, 17, 2, "English", "B-101"},
{131172, 1, 16.00, 18.00, 1, 17, 2, "Music", "B-101"},
{141132, 1, 18.30, 20.30, 2, 13, 2, "Science", "C2-207"},
};
创建双链接列表
CLASS* create_class(struct timetable_t* arr, int len) {
int i;
CLASS* head = NEW(1);
CLASS* p = head;
CLASS* t = NULL;
for (i = 0; i < len; ++i) {
t = NEW(1);
t->t.id = arr[i].id;
t->t.weekday = arr[i].weekday;
t->t.start_time = arr[i].start_time;
t->t.end_time= arr[i].end_time;
t->t.start_week = arr[i].start_week;
t->t.end_week = arr[i].end_week;
t->t.is_even = arr[i].is_even;
t->t.name = arr[i].name;
t->t.location = arr[i].location;
t->pre = p;
p->next = t;
p = p->next;
}
head->pre = p;
p->next = head;
return head;
}
现在,如果我想获取当前的类(class),我在程序中使用 linklist 双链表来组织数据,通过比较当前的“hour.day”。那么问题来了,如果当前类为NULL,有没有简单的方法来获取下一个类。
最佳答案
我这样做的方法是让 head 成为全局的。然后提供一个函数来遍历列表(从头开始)以获得您想要的内容。所以你可以计算、get_next、get_next_by_value之类的东西。
关于c - 我的时间表计划中的任何建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20189232/