Difference between revisions of "LT.c"
From Organic Design wiki
m |
m |
||
Line 1: | Line 1: | ||
<c> | <c> | ||
− | // Start at subject listItem and traverse the key as an association to a new listItem | + | // Start at subject listItem and traverse the key as an association to a new listItem |
// - key is also a listItem reference and its binary address is used as the traversal path | // - key is also a listItem reference and its binary address is used as the traversal path | ||
// - subject and key (all list-item references are ints starting at item 0) | // - subject and key (all list-item references are ints starting at item 0) |
Revision as of 01:38, 9 January 2011
<c> // Start at subject listItem and traverse the key as an association to a new listItem // - key is also a listItem reference and its binary address is used as the traversal path // - subject and key (all list-item references are ints starting at item 0) // - if key is 0 the subject is returned unchanged, key 1 and 2 are the two single-iteration traversals item listTraverse(item subject, item key) { if (key++ > 0) { int i,j; for (i = 1; i <= key >> 1; i <<= 1) { j = subject * 3; if (key & i) j++; if (space[j] == 0) space[j] = listInsert(); subject = space[j]; } } return subject; } </c>