Это простая программа для реализации стека с использованием структурных указателей.Однако при запуске кода моя программа завершает работу без каких-либо ошибок.
#include<stdio.h>
#include<stdlib.h>
#define maxsize 5
struct s
{
char array[maxsize];
int top;
};
typedef struct s stack;
int insert(stack *p)
{
char ch;
/*if(p->top==NULL)
{
p->top=-1;
}*/
if(p->top>=maxsize-1)
{
printf("Stack overflows on insertion\n");
}
else
{
printf("Enter the character to be inserted : ");
scanf("\n%c",&ch);
p->top++;
p->array[p->top]=ch;
}
}
int delete(stack *p)
{
if(p->top==-1)
{
printf("Stack underflows on deletion\n");
}
else
{
p->top--;
}
}
int display(stack *p)
{
int i;
if(p->top==-1)
{
printf("Stack is empty\n");
}
else
{
for(i=0;i<=p->top;i++)
{
printf("%c",p->array[i]);
}
printf("\n");
}
}
int main()
{
int c;
stack *p;
p->top=-1;
while(1)
{
printf("1--> INSERT 2--> DELETE 3--> DISPLAY\n");
scanf("%d",&c);
switch(c)
{
case 1:
insert(p);
break;
case 2:
delete(p);
break;
case 3:
display(p);
break;
default:
printf("ERROR : Invalid Choice");
}
}
}
Эта программа содержит три функции для перемещения, выталкивания и отображения элементов в стеке, а последняя основная функция - это то место, откуда выполняется вызов функции.
Программа успешно компилируется с 0 ошибками, но во время работы завершает работу, ничего не отображая.