/*{{{ treenode *add_profcountupd_nd(int count, treenode *tptr) */ treenode *add_profcountupd_nd (ProfTabEntry *profcount, treenode *tptr) { #if 0 const SOURCEPOSN locn = LocnOf (tptr); treenode *argls = addtofront (newintconstant (profcount->entry_number, S_INT), NULL); treenode *procnamend = get_predefname (PD_UPDATE_PROFCOUNT); return newcnode (S_SEQ, locn, newlistnode (S_LIST, locn, newinstancenode (S_PINSTANCE, locn, procnamend, argls), newlistnode (S_LIST, locn, tptr, NULL))); #else return NULL; #endif }
int refer_page (int pagenumber, int hash[], Queue *q) { listnode *node = hash[pagenumber]; if (node) { /* Page was found in the hash. Move the page to the top */ if (q->head == node) { /* already in front nothing to do */ } else if (q->tail == node) { /* remove this node from tail and put it in the front */ tail = tail->left; node->right = q->head; q->head->left = node; q->head = node; } else { node->left->right = node->right; node->right->left = node->left; node->right = q->head; q->head->left = node; q->head = node; } } else { node = newlistnode(pagenumber); Enqueue (node, q); hash[pagenumber] = node; } return 0; }
List * vert_sum (Treenode *root) { List *Head = newlistnode(0); vertical_sum (root, Head); while (Head->prev) { Head = Head->prev; } return Head; }
int vertical_sum (Treenode *root, List *head) { head->value += root->data; if (root->left) { if (head->prev == NULL) { head->prev = newlistnode(0); head->prev->next = head; } vertical_sum (root->left, head->prev); } if (root->right) { if (head->next == NULL) { head->next = newlistnode (0); head->next->prev = head; } vertical_sum (root->right, head->next); } return ; }