したがって、何らかの理由で、この関数はすべての同じ値をスタックにプッシュしているように見えます(または、同じ値を出力するだけです。実際には、私も含めたprintAll関数と関係があると思います)。重要なのは、要素配列(整数の配列)の場合、printAllは値を適切に循環することです。ただし、charElement配列に関するものはすべて、printAll関数はcharElements関数のすべての値の最新の値のみを出力します。なぜこれが起こっているのか考えていますか?
void pushString(Stack *S, char element[])
{
/* If the stack is full, we cannot push an element into it as there is no space for it.*/
if(S->size == S->capacity)
{
printf("Stack is Full\n");
}
else
{
/* Push an element on the top of it and increase its size by one*/
S->charElements[S->size++] = element;
S->elements[S->size-1] = '\n';
}
return;
}
void printAll(Stack *S)
// NOTE: Called w/ user input 'f'
// PRE: Stack S is initialized
// POST: Print all values from the stack
// Do NOT alter anything
{
int i;
for(i = 0; i < S->size; i++)
{
printf("%d \n", i);
if(S->charElements[i] == "\n")
{
printf("%.2f \n", (float)S->elements[i]);
}
else if(S->elements[i] == '\n')
{
printf("%s \n", S->charElements[i]);
}
}
}