Итак, я написал программу для ввода пользователя в стек. Но, несмотря на мои строгие попытки, я не мог правильно вставить данные. Он показывает, что данные были вставлены, но пока отображается, отображается значение мусора. Вот моя главная функция:Правильное значение пользовательского ввода не вставлено в стек
//Stack
#include<stdio.h>
#include<stdlib.h>
#define MAXSTK 10
void push(int *, int, int *, int);
//void pop();
void show_stack();
int main()
{
int ch, ch1, stack[MAXSTK], top=-1;
do{
printf("\n <<Stack MENU>>");
printf("1. Add Element");
printf("2. Delete Element");
printf("3. Show Stack");
printf("4. Exit menu");
printf("\n Enter your choice->");
scanf("%d", &ch);
switch(ch)
{
case 1: printf("\n Enter element to add->");
scanf("%d",&ch1);
push(stack,ch1, &top, MAXSTK);
break;
/* case 2: pop();
break;*/
case 3: printf("\n The stack is->");
show_stack(stack, MAXSTK);
break;
default: printf("\n Invalid Choice!!!");
break;
}
}while(ch!=4);
return 0;
}
А вот моя функция проталкивания:
void push(int newstack[], int num, int *newtop, int bound)
{
*newtop=*newtop+1;
if(*newtop==0)
printf("\n Stack was Empty. New Value inserted.");
if(*newtop>(bound-1))
{
printf("\n Caution! OVERFLOW!!!");
}
newstack[*newtop]=num;
}
А вот мое шоу функция:
void show_stack(int newstack[], int bound)
{
int i;
printf("\n");
for(i=0;i<=bound;i++)
printf("%d",newstack[i]);
}
Пожалуйста, помогите мне найти ошибку.
Блестящее объяснение. Благодарим вас за указание на логическую ошибку в функции push. Ошибка, о которой вы упомянули, тоже возилась с моим стеклом; Я поймал его во время шоу. +1 – Mistu4u