1. 根据输入的栈中元素个数n和各元素值建立一个顺序栈,并输出栈中各元素值。 2. 将数据元素e入栈,并输出入栈后的顺序栈中各元素值。 3. 将顺序栈中的栈顶元素出栈,并输出出栈元素的值和出栈后顺序栈中各元素值。用C语言实现
时间: 2024-02-01 07:13:07 浏览: 64
以下是用C语言实现的代码:
```c
#include <stdio.h>
#define MAXSIZE 100 // 栈的最大容量
typedef struct {
int data[MAXSIZE]; // 存储栈中元素的数组
int top; // 栈顶指针
} SeqStack;
// 初始化栈
void InitStack(SeqStack *S) {
S->top = -1; // 空栈的栈顶指针为-1
}
// 判断栈是否为空
int IsEmpty(SeqStack S) {
if (S.top == -1)
return 1; // 栈为空
else
return 0; // 栈不为空
}
// 判断栈是否已满
int IsFull(SeqStack S) {
if (S.top == MAXSIZE - 1)
return 1; // 栈已满
else
return 0; // 栈未满
}
// 入栈操作
void Push(SeqStack *S, int e) {
if (IsFull(*S)) {
printf("Stack is full.\n");
return;
}
S->top++; // 栈顶指针加1
S->data[S->top] = e; // 将元素e入栈
}
// 出栈操作
void Pop(SeqStack *S) {
if (IsEmpty(*S)) {
printf("Stack is empty.\n");
return;
}
int e = S->data[S->top]; // 取出栈顶元素
S->top--; // 栈顶指针减1
printf("Pop element: %d\n", e); // 输出出栈元素的值
}
// 输出栈中各元素值
void PrintStack(SeqStack S) {
if (IsEmpty(S)) {
printf("Stack is empty.\n");
return;
}
printf("Stack elements: ");
for (int i = 0; i <= S.top; i++) {
printf("%d ", S.data[i]);
}
printf("\n");
}
int main() {
SeqStack S;
int n, e;
printf("Enter the number of elements: ");
scanf("%d", &n);
printf("Enter the elements:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &e);
Push(&S, e);
}
PrintStack(S);
printf("Enter an element to push: ");
scanf("%d", &e);
Push(&S, e);
PrintStack(S);
Pop(&S);
PrintStack(S);
return 0;
}
```
样例输入:
```
5
1 2 3 4 5
6
```
样例输出:
```
Stack elements: 1 2 3 4 5
Stack elements: 1 2 3 4 5 6
Pop element: 6
Stack elements: 1 2 3 4 5
```
阅读全文