Example #1
0
File: list.c Project: myss/parrotjs
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);
        }
    }
}
Example #3
0
File: list.c Project: myss/parrotjs
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);
    }
}