online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/****************************************************************************** Welcome to code of Lập trình - Điện tử Series: DSA Author: Nghĩa Taarabt *******************************************************************************/ #include <stdio.h> #include <stdint.h> #include <stdlib.h> typedef enum { STACK_OK = 0U, STACK_EMPTY = 1U, STACK_OVERFLOW = 2U, } StackStatus_t; typedef enum { STACK_MONO_ASC, STACK_MONO_DESC, } eMonoStackType; typedef struct { uint32_t *pData; // Pointer point to Data Array in Heap uint32_t Top; uint32_t MAX; eMonoStackType eType; } MonoStackType; MonoStackType sMonoStack = { 0U }; void MonoStack_Init(uint32_t maxItem, eMonoStackType eStackType) { /* Allocate Memory for Stack Data */ sMonoStack.pData = (uint32_t*)malloc(maxItem * sizeof(uint32_t)); sMonoStack.Top = 0U; sMonoStack.MAX = maxItem; sMonoStack.eType = eStackType; } StackStatus_t MonoStack_Push(uint32_t inputData) { StackStatus_t eStatus = STACK_OVERFLOW; uint32_t Idx = 0U; /* Search the position for new element */ for( Idx = 0U; Idx < sMonoStack.Top; Idx++ ) { if( (sMonoStack.pData[Idx] <= inputData && STACK_MONO_DESC == sMonoStack.eType) \ || (sMonoStack.pData[Idx] >= inputData && STACK_MONO_ASC == sMonoStack.eType) \ ) { /* Searching is PAUSE and push new element to stack */ sMonoStack.pData[Idx] = inputData; sMonoStack.Top = Idx+1; break; } } /* Case Stack is Full and New Element is not mapping */ if( Idx == sMonoStack.MAX ) { eStatus = STACK_OVERFLOW; } /* First Element is added or Case No Element is poped from stack, push new to last */ else if( Idx == sMonoStack.Top ) { sMonoStack.pData[sMonoStack.Top++] = inputData; eStatus = STACK_OK; } else /* Normal Case */ { eStatus = STACK_OK; } return eStatus; } void printStack(void) { int i; printf("Stack Data: "); for(i = 0U; i < sMonoStack.Top; i++) { printf("%d ", sMonoStack.pData[i]); } printf("\n"); } uint8_t buildings[] = {18, 14, 13, 16, 12}; void main() { uint32_t Idx; uint32_t numofBuilding = sizeof(buildings)/sizeof(buildings[0]); MonoStack_Init(numofBuilding, STACK_MONO_DESC); for( Idx = 0U; Idx < numofBuilding; Idx++ ) { MonoStack_Push(buildings[Idx]); } printStack(); // expect = [18, 16, 12] }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue