void pushFront(void* elem, PjsList list, Mempool mp) { ListEntry entry = newListEntry(elem, mp); if (list->start) { entry->next = list->start; list->start = entry; } else { list->start = list->end = entry; } }
void addToList(LISTENTRY *entry, bitset vector){ int compare = vector - entry->vector; if(compare == 0){ entry->multiplicity++; } else if(compare < 0){ if(entry->smaller == NULL){ entry->smaller = newListEntry(vector); } else { addToList(entry->smaller, vector); } } else { // compare > 0 if(entry->larger == NULL){ entry->larger = newListEntry(vector); } else { addToList(entry->larger, vector); } } }
void pushBack(void* elem, PjsList list, Mempool mp) { ListEntry entry = newListEntry(elem, mp); entry->next = 0; if (list->end) { list->end->next = entry; list->end = entry; } else { list->start = list->end = entry; } }
void storeParityVector(){ int i; permutationCount++; bitset parityVector = EMPTY_SET; for(i = 0; i < n; i++){ if((permutation[i] - i) % 2){ ADD(parityVector, i); } } if(parityVectors == NULL){ parityVectors = newListEntry(parityVector); } else { addToList(parityVectors, parityVector); } }