33 lines
729 B
C
33 lines
729 B
C
#define push_to_sll(lhead, ltail, new) \
|
|
if ((ltail)) { \
|
|
assert((lhead)); \
|
|
(ltail)->next = (new); \
|
|
} else { \
|
|
assert(!(ltail)); \
|
|
(lhead) = (new); \
|
|
} \
|
|
(ltail) = (new)
|
|
|
|
#define push_to_dll(lhead, ltail, new) \
|
|
if ((ltail)) { \
|
|
assert((lhead)); \
|
|
(ltail)->next = (new); \
|
|
(new)->prev = (ltail); \
|
|
} else { \
|
|
assert(!(ltail)); \
|
|
(lhead) = (new); \
|
|
} \
|
|
(ltail) = (new)
|
|
|
|
#define pop_from_dll(lhead, ltail, popped) do { \
|
|
if ((popped)->prev) { \
|
|
(popped)->prev->next = (popped)->next; \
|
|
} else { \
|
|
(lhead) = (popped)->next; \
|
|
} \
|
|
if ((popped)->next) { \
|
|
(popped)->next->prev = (popped)->prev; \
|
|
} else { \
|
|
(ltail) = (popped)->prev; \
|
|
} \
|
|
} while (0)
|