int calculation(struct stack_t *stack,char exp_string[EXPRESSION_SIZE]) { int counter, value, result, first_value, second_value; for(counter = 0; exp_string[counter] != '\0'; counter++) { if(exp_string[counter] >= '0' && exp_string[counter] <= '9') //checks if the string element is a value { value = exp_string[counter] - '0'; stack_push_back(stack,value); } else if(exp_string[counter] == '*' || exp_string[counter] == '/' || exp_string[counter] == '+' || exp_string[counter] == '-') { if(stack_get_size(stack) < 2) { return INT_MIN; } else { second_value = stack_pop_back(stack); first_value = stack_pop_back(stack); switch(exp_string[counter]) { case '*' : result = first_value * second_value; break; case '/' : result = first_value / second_value; break; case '+' : result = first_value + second_value; break; case '-' : result = first_value - second_value; break; } stack_push_back(stack,result); } } } if(stack_get_size(stack) == 1) { return result; } else { return INT_MAX; } }
void tarjan_dfs(int u) { dfn[u] = low[u] = ++idx; in_stack[u] = 1; stack_push_back(u); struct Edge *e = orig_edge[u]; while (e) { if (!dfn[e->v]) { tarjan_dfs(e->v); if (low[e->v] < low[u]) low[u] = low[e->v]; } else if (in_stack[e->v]) if (dfn[e->v] < low[u]) low[u] = dfn[e->v]; e = e->next; } if (dfn[u] == low[u]) { scc_cnt++; int v; do { v = stack_back(); stack_pop_back(); in_stack[v] = 0; scc_id[v] = scc_cnt; scc_size[scc_cnt]++; } while (v != u) ; } }
static void JsonParser_endElem(struct JsonParser *parser, const String name, int type ) { DEBUG_PRINT("Json_endElem %s type %d\n", name, type ); assert( parser->m_nodeStack->num > 0 ); if (parser->m_nodeStack->num > 0) { stack_pop_back(parser->m_nodeStack); } }
static int JsonParser_internalEndObj(struct ParserInternal *pi, enum eElemType elemType) { char *name; void *ptr = stack_pop_back(&(pi)->stack); if (elemType != JSON_ARR_E && elemType != JSON_OBJ_E) { pi->error = JSNON_ERR_NOTOBJ; return JSON_NOK; } if ((name = (char*)ARR_VAL(ptr))) { if (pi->endElem) { pi->endElem(pi->parser, name, (elemType == JSON_ARR_E) ? JSON_ARRAY : JSON_OBJ); } free(name); } JsonParser_internalReset(pi); return 0; }
int main () { struct stack_t s; char i,c,p,brackets[20]; int output = 0; stack_init(&s); printf("Vuvedi niz :"); scanf("%s",brackets); for (c = 0;brackets[c] != '\0';c++) { if (brackets[c] == '{' || brackets[c] == '[' || brackets[c] == '(') { stack_push_back(&s,brackets[c]); } } for (i = 0;brackets[i] != '\0';i++) { if (brackets[c] == '{' || brackets[c] == '[' || brackets[c] == '(') { stack_push_back(&s,brackets[c]); } //if (stack_size != 0) //{ switch (brackets[i]) { case '}': p = stack_pop_back(&s); if (p != '{') { //printf("%c-{\n",p); output = 1; } break; case ']': p = stack_pop_back(&s); if (p != '[') { //printf("%c-[\n",p); output = 1; } break; case ')': p = stack_pop_back(&s); if (p!= '(') { //printf("%c-(\n",p); output = 1; } break; } //} } if (output == 0 ) { printf("Valid"); } else {printf("Invalid\n");} stack_destroy(&s); return 0; }