用c语言编写顺序栈的代码,包含压栈弹栈显示以及退出功能
时间: 2023-03-16 18:43:56 浏览: 115
我可以提供一个简单的例子,你可以参考它: #include <stdio.h>
#define MAXSIZE 10 typedef struct
{
int data[MAXSIZE];
int top;
}Stack; // 功能函数
void initStack(Stack *s);
int push(Stack *s, int e);
int pop(Stack *s, int *e);
void showStack(Stack *s); int main()
{
Stack s;
int e;
int i, n;
char c;
initStack(&s);
while (1)
{
printf("\n输入1-4选择功能:\n");
printf("1. 压栈\n");
printf("2. 弹栈\n");
printf("3. 显示栈\n");
printf("4. 退出\n");
scanf("%c", &c);
switch (c)
{
case '1':
printf("请输入要入栈的元素个数:");
scanf("%d", &n);
printf("请输入 %d 个元素:\n", n);
for (i = 0; i < n; i++)
{
scanf("%d", &e);
push(&s, e);
}
break;
case '2':
if (pop(&s, &e))
printf("出栈的元素是:%d\n", e);
else
printf("栈为空!\n");
break;
case '3':
showStack(&s);
break;
case '4':
printf("程序退出!\n");
return 0;
break;
default:
printf("输入有误!\n");
break;
}
}
} // 初始化
void initStack(Stack *s)
{
s->top = -1;
} // 压栈
int push(Stack *s, int e)
{
if (s->top == MAXSIZE - 1)
{
printf("栈满!\n");
return 0;
}
s->top++;
s->data[s->top] = e;
return 1;
} // 弹栈
int pop(Stack *s, int *e)
{
if (s->top == -1)
{
return 0;
}
*e = s->data[s->top];
s->top--;
return 1;
} // 显示栈
void showStack(Stack *s)
{
int i;
if (s->top == -1)
{
printf("栈为空!\n");
return;
}
printf("栈中元素为:\n");
for (i = s->top; i >= 0; i--)
{
printf("%d\n", s->data[i]);
}
}
阅读全文