19 assert(one < nodelist_size(list));
22 nodelist_append(list,
NULL);
25 size_t to_move =
sizeof(
node_t*) * (nodelist_size(list) - one - 2);
27 memmove(nodelist_at(list, one + 2), nodelist_at(list, one + 1), to_move);
31 nodelist_set(list, one + 1, n);
35 assert(np < nodelist_size(list));
36 for (
size_t i = np; i != 0; --i) {
38 nodelist_append(list, nodelist_get(list, 0));
39 size_t to_move =
sizeof(
node_t*) * (nodelist_size(list) - 1);
41 memmove(nodelist_at(list, 0), nodelist_at(list, 1), to_move);
43 nodelist_resize(list, nodelist_size(list) - 1,
NULL);
51 nodelist_remove(list, cn);
53 for (
size_t i = 0; i < nodelist_size(list); ++i) {
54 Agnode_t *here = nodelist_get(list, i);
57 nodelist_append(list,
NULL);
58 size_t to_move =
sizeof(
node_t*) * (nodelist_size(list) - i - 1);
60 memmove(nodelist_at(list, i + 1), nodelist_at(list, i), to_move);
62 nodelist_set(list, i, cn);
74 for (
size_t i = 0; i < nodelist_size(l2); ++i) {
75 nodelist_append(l1, nodelist_get(l2, i));
87void printNodelist(nodelist_t * list)
89 for (
size_t i = 0; i < nodelist_size(list); ++i) {
90 fprintf(stderr,
"%s ",
agnameof(nodelist_get(list, i)));
char * agnameof(void *)
returns a string descriptor for the object.
#define neighbor(t, i, edim, elist)
void realignNodelist(nodelist_t *list, size_t np)
Make np new front of list, with current last hooked to current first.
void insertNodelist(nodelist_t *list, Agnode_t *cn, Agnode_t *neighbor, int pos)
void reverseAppend(nodelist_t *l1, nodelist_t *l2)
Create l1 @ (rev l2) Destroys and frees l2.
void appendNodelist(nodelist_t *list, size_t one, Agnode_t *n)
Add node after one.
static void concatNodelist(nodelist_t *l1, nodelist_t *l2)
attach l2 to l1.