나는 약간의 문제에 봉착했습니다. 불행하게도 나는 아직 이 언어의 세부사항을 배우고 있는 중입니다.
다음 코드가 있습니다
#define SIZE 5
typedef struct
{
int start;
int end;
int nElements;
int vetor[SIZE];
} TSTACK;
다음 함수를 사용하여 배열에 값을 삽입하려고 합니다.
void Push(TSTACK *s, int elementInsert)
{
if(IsFull(s))
{
printf("%s\n", "# ERROR: full.");
}
else
{
s->end++;
if(s->end == SIZE)
{
s->end = 0;
}
s->vetor[s->end] = elementInsert;
s->nElements++;
}
}
다음 함수를 사용하여 요소를 표시합니다.
void Display(TSTACK *s)
{
int i;
if (isEmpty(s))
{
printf("%s\n", "# ERROR: empty");
}
else
{
for (i = 0; i < s->nElements; i++)
{
printf ("value: %d\n", s->vetor[i]);
}
}
}
내 질문은 다른 양의 요소를 추가하면 동일한 결과를 얻지 못한다는 것입니다. 5개의 요소를 삽입하면 Display 함수가 모든 요소를 올바르게 표시하지만 5개 미만을 삽입하면 첫 번째 항목이 바늘:
4201166, 3, 5, 7의 주요 결과는 다음과 같습니다.
int main(void)
{
TSTACK test;
test.start = 1;
test.end = 0;
test.nElements = 0;
Push(&test, 3);
Push(&test, 5);
Push(&test, 7);
Push(&test, 3);
Display(&test);
}
5, 3, 5, 7, 3의 주요 결과는 다음과 같습니다.
int main(void)
{
TSTACK test;
test.start = 1;
test.end = 0;
test.nElements = 0;
Push(&test, 3);
Push(&test, 5);
Push(&test, 7);
Push(&test, 3);
Push(&test, 5);
Display(&test);
}
누군가 내가 어디가 잘못되었는지 보여줄 수 있습니까?