编写一个程序,实现顺序栈的各种基本操作(假设栈的元素类型为 并在此基础上设计一个主程序完成如下功能: 编写IpitStack函数,初始化顺序栈S: 编后Push函数,将元素 A,B,C,D依次进栈;。取栈项元素: 编写Pop函数,输出出栈序列。
时间: 2024-05-11 21:15:19 浏览: 104
实验一、进程调度,设计一个有 N个进程共行的进程调度程序
5星 · 资源好评率100%
好的,我可以回答这个问题。顺序栈是一种线性数据结构,常见的基本操作包括入栈、出栈、栈顶元素获取、栈空判断等。以下是一个示例程序,展示了顺序栈的各种基本操作的实现:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top;
} SqStack;
void InitStack(SqStack *S)
{
S->top = -1;
}
int StackEmpty(SqStack S)
{
return S.top == -1;
}
void Push(SqStack *S, int x)
{
if (S->top == MAXSIZE - 1) {
printf("Stack overflow.\n");
exit(1);
}
S->data[++S->top] = x;
}
int Pop(SqStack *S)
{
int x;
if (StackEmpty(*S)) {
printf("Stack underflow.\n");
exit(1);
}
x = S->data[S->top--];
return x;
}
int GetTop(SqStack S)
{
if (StackEmpty(S)) {
printf("Stack is empty.\n");
exit(1);
}
return S.data[S.top];
}
int main()
{
SqStack S;
InitStack(&S);
Push(&S, 'A');
Push(&S, 'B');
Push(&S, 'C');
Push(&S, 'D');
printf("出栈序列:");
while (!StackEmpty(S)) {
printf("%c", Pop(&S));
}
printf("\n");
return 0;
}
```
通过上述程序,我们实现了顺序栈的基本操作,并在主函数中完成了如下任务:
1. 初始化一个顺序栈;
2. 依次压入元素'A'、'B'、'C'、'D';
3. 输出出栈序列,即把栈中元素依次取出。
希望这个程序能够对您有所帮助!
阅读全文