用C实现:输入描述 依次输入要入栈的元素个数n,以及n个正整数入栈; 举例:3 4 5 6 输出描述 依次调用你写的出栈函数2次,打印函数1次后; 输出: 4
时间: 2024-02-16 18:03:50 浏览: 24
好的,我会用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 x) {
if (is_full(s)) {
printf("stack is full\n");
return;
}
s->data[++s->top] = x;
}
int pop(Stack *s) {
if (is_empty(s)) {
printf("stack is empty\n");
return -1;
}
return s->data[s->top--];
}
int peek(Stack *s) {
if (is_empty(s)) {
printf("stack is empty\n");
return -1;
}
return s->data[s->top];
}
```
接下来,我们可以编写主函数来实现题目所需的功能。
```c
int main() {
int n, x;
Stack s;
init(&s);
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &x);
push(&s, x);
}
pop(&s);
pop(&s);
printf("%d\n", peek(&s));
return 0;
}
```
在这个程序中,我们首先初始化一个栈s,然后读入要入栈的元素个数n,以及n个正整数入栈。接下来,我们调用两次pop函数,将栈顶的两个元素出栈。最后,我们调用peek函数来获取栈顶元素的值,并将其打印出来。
注意:在这个程序中,并没有对输入数据进行错误处理。如果输入的数据格式不符合要求,程序可能会出现错误。