建立顺序栈,并在顺序栈上实现入栈和出栈操作,编程实现如下功能: 1.根据输入的栈中元素个数n和各元素值建立一个顺序栈,并输出栈中各元素值。 2.将数据元素e入栈,并输出入栈后的顺序栈中各元素值。 3.将顺序栈中的栈顶元素出栈,并输出出栈元素的值和出栈后顺序栈中各元素值。c语言
时间: 2024-02-03 14:13:13 浏览: 67
下面是一个简单的基于C语言的顺序栈实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
void init(Stack *s) {
s->top = -1;
}
int is_empty(Stack *s) {
return s->top == -1;
}
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
void push(Stack *s, int elem) {
if (is_full(s)) {
printf("Stack overflow\n");
return;
}
s->data[++s->top] = elem;
}
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack underflow\n");
return -1;
}
return s->data[s->top--];
}
void print(Stack *s) {
if (is_empty(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() {
Stack s;
init(&s);
int n;
printf("Enter number of elements: ");
scanf("%d", &n);
printf("Enter %d elements:\n", n);
for (int i = 0; i < n; i++) {
int elem;
scanf("%d", &elem);
push(&s, elem);
}
print(&s);
int e;
printf("Enter element to push: ");
scanf("%d", &e);
push(&s, e);
print(&s);
int popped = pop(&s);
printf("Popped element: %d\n", popped);
print(&s);
return 0;
}
```
这个实现中,我们定义了一个结构体`Stack`,其中包含一个数组`data`和一个整型变量`top`,用来表示栈顶元素的下标。在初始化函数`init`中,我们将`top`的值初始化为-1,表示栈为空;在判断栈是否为空或已满时,只需判断`top`的值是否等于-1或MAX_SIZE-1即可。入栈操作`push`将一个元素插入到栈顶,栈顶的下标`top`自增;出栈操作`pop`返回栈顶元素,并将栈顶下标`top`减一。最后,在`main`函数中,我们通过`scanf`函数读入用户输入的元素进行入栈,也可以通过`printf`函数输出栈中元素的值。
阅读全文