static SReference do_reverse(const SReference &list, const SReference &rest) { if(list.IsEmptyList()) return rest; SExpressionCons *dp = list.SimpleCastGetPtr<SExpressionCons>(); INTELIB_ASSERT(dp, IntelibX_not_a_list(list)); return do_reverse(dp->Cdr(), SReference(dp->Car(), rest)); }
void do_reverse(char s[], int left, int right){ int aux; if (left < right){ aux = s[left]; s[left] = s[right]; s[right] = aux; do_reverse (s, left + 1, right - 1); } }
Node* do_reverse(Node* node, Node** new_head) { Node* new_prev; if(node->next != nullptr) { new_prev = do_reverse(node->next, new_head); new_prev->next = node; node->next=nullptr; } else { *new_head = node; return node; } return node; }
// <list> void LFunctionReverse:: DoApply(int paramsc, const SReference paramsv[], IntelibContinuation& lf) const { lf.RegularReturn(do_reverse(paramsv[0], *PTheEmptyList)); }
void reverse(char s[]){ do_reverse(s, 0, strlen(s) - 1); }
int transcribe_math (xmlNode * node, int action) { StyleType *style; xmlNode *child; int branchCount = 0; if (action == 0) { insert_translation (ud->mainBrailleTable); } push_sem_stack (node); switch (ud->stack[ud->top]) { case no: pop_sem_stack (); break; case skip: pop_sem_stack (); return 1; case reverse: do_reverse (node); break; case math: break; default: break; } if ((style = is_style (node)) != NULL) start_style (style); child = node->children; while (child) { insert_code (node, branchCount); branchCount++; switch (child->type) { case XML_ELEMENT_NODE: transcribe_math (child, 1); break; case XML_TEXT_NODE: mathText (child, 1); break; case XML_CDATA_SECTION_NODE: transcribe_cdataSection (child); break; default: break; } child = child->next; } insert_code (node, branchCount); insert_code (node, -1); if (style) { mathTrans (); end_style (style); } pop_sem_stack (); if (action == 0) mathTrans (); return 1; }
Node *reverse(Node *head) { if(head == nullptr) return nullptr; Node* new_head; do_reverse(head, &new_head); return new_head; }