#include <stdio.h>
#define MAXSIZE 101
int A[MAXSIZE];
int top=-1;
int data;
void push()
{
printf("Enter a number\n");
scanf(" %d",&data);
if (top==MAXSIZE-1){
printf("Overflow.Array size limit reached\n");
return;
}
A[++top]=data;
}
void pop()
{
if(top==-1){
printf("Empty Stack!\n");
return;
}
top--;
}
int isEmpty()
{
if(top==-1)
{
printf("Empty yes\n");
return 0;
}
}
int first()
{
return A[top];
}
int printStack()
{
int i=0;
for(i=0;i<=top;i++)
{
printf("%d \n",A[i] );
}
return 0;
}
int main(int argc, char const *argv[])
{
int choice;
int flag=1;
do{
printf("The options are\n");
printf("1\t\t Push\n2\t\t Pop\n3\t\t Empty\n4\t\t Top\n5\t\t Print\n\n");
scanf(" Enter choice %d",&choice);
switch(choice)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
isEmpty();
break;
case 4:
first();
break;
case 5:
printStack();
break;
default:
printf("Please enter correct menu choice");
}
printf("Wanna repeat again ? Press 1 to repeat 0 to exit\n");
scanf("%d",&flag);
}while(flag);
return 0;
}
我尝试使用数组创建Stack的实现。我在循环中遇到了一些问题。该程序运行,它要求选择,并从开关案例驱动菜单,它应该去该功能,执行它并回到main()
但是有一些问题,它再次启动循环而不执行任何功能
答案 0 :(得分:0)
将您的scanf语句更改为:
printf("Enter your choice :");
scanf("%d", &choice);
答案 1 :(得分:0)
scanf(" Enter choice %d",&choice);
不是编写scanf()
函数的有效方法。要在屏幕上显示消息,我们puts()
和printf()
但scanf()
仅用于获取输入。这里解释了异常行为:
要执行向屏幕显示消息然后从用户那里获取输入的任务,请将语句重写为:
printf("Enter your choice ");
scanf("%d", &choice);
答案 2 :(得分:0)
通过将堆栈实现为数据结构来理解它更容易。通过创建堆栈结构,您可以轻松创建多个堆栈。
struct stack {
int data[MAX]; //define max
int top; //top of stack
} s1,s2,s3; //create multiple stack variables