3 .--A---B----C----D-----E----F
9 Then the sequence will be
10 G M H I O J A B K N L C D E F
14 #include <libopkg/active_list.h>
19 struct active_list list
;
20 } __attribute__((packed
));
22 struct active_test
*active_test_new(char *str
) {
23 struct active_test
*ans
= (struct active_test
*)calloc(1, sizeof(struct active_test
));
25 active_list_init(&ans
->list
);
28 void active_test_add(struct active_list
*head
, struct active_test
*node
) {
29 active_list_add(head
, &node
->list
);
32 void active_test_add_depend(struct active_test
*A
, struct active_test
*B
) {
33 active_list_add_depend(&A
->list
, &B
->list
);
36 void make_list(struct active_list
*head
) {
37 struct active_test
*A
= active_test_new("A");
38 struct active_test
*B
= active_test_new("B");
39 struct active_test
*C
= active_test_new("C");
40 struct active_test
*D
= active_test_new("D");
41 struct active_test
*E
= active_test_new("E");
42 struct active_test
*F
= active_test_new("F");
43 struct active_test
*G
= active_test_new("G");
44 struct active_test
*H
= active_test_new("H");
45 struct active_test
*I
= active_test_new("I");
46 struct active_test
*J
= active_test_new("J");
47 struct active_test
*K
= active_test_new("K");
48 struct active_test
*L
= active_test_new("L");
49 struct active_test
*M
= active_test_new("M");
50 struct active_test
*N
= active_test_new("N");
51 struct active_test
*O
= active_test_new("O");
53 active_test_add(head
, A
);
54 active_test_add(head
, B
);
55 active_test_add(head
, C
);
56 active_test_add(head
, D
);
57 active_test_add(head
, E
);
58 active_test_add(head
, F
);
59 active_test_add(head
, G
);
60 active_test_add(head
, H
);
61 active_test_add(head
, I
);
62 active_test_add(head
, J
);
63 active_test_add(head
, K
);
64 active_test_add(head
, L
);
65 active_test_add(head
, M
);
66 active_test_add(head
, N
);
67 active_test_add(head
, O
);
68 active_test_add_depend(H
, M
);
69 active_test_add_depend(A
, G
);
70 active_test_add_depend(A
, H
);
71 active_test_add_depend(A
, I
);
72 active_test_add_depend(A
, J
);
73 active_test_add_depend(J
, O
);
74 active_test_add_depend(C
, K
);
75 active_test_add_depend(C
, L
);
76 active_test_add_depend(L
, N
);
80 struct active_list head
;
81 struct active_list
*ptr
;
82 struct active_test
*test
;
83 active_list_init(&head
);
86 for(ptr
= active_list_next(&head
, &head
); ptr
;ptr
= active_list_next(&head
, ptr
)) {
87 test
= list_entry(ptr
, struct active_test
, list
);
88 printf ("%s ",test
->str
);
91 for(ptr
= active_list_next(&head
, &head
); ptr
;ptr
= active_list_next(&head
, ptr
)) {
92 test
= list_entry(ptr
, struct active_test
, list
);
93 printf ("%s ",test
->str
);
96 for(ptr
= active_list_next(&head
, &head
); ptr
;ptr
= active_list_next(&head
, ptr
)) {
97 test
= list_entry(ptr
, struct active_test
, list
);
98 printf ("%s ",test
->str
);