用C++建立一个栈,进栈10个任意数,连续出栈5个元素并依次输出,输出栈顶元素、栈底元素和栈中元素个数,当栈不为空时,将栈中所有元素输出并输出栈中元素个数
时间: 2023-05-13 19:04:40 浏览: 120
c++ 定义一个字符栈类Stack(包括类的实现)。数据成员包括一个存放字符的数组stck[ ]和一个栈指针tos。栈.pdf
以下是用C建立一个栈的代码,可以实现进栈、出栈、输出栈顶元素、栈底元素、栈中元素个数以及输出栈中所有元素的功能:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
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");
exit(1);
}
s->data[++s->top] = x;
}
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty\n");
exit(1);
}
return s->data[s->top--];
}
int top(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty\n");
exit(1);
}
return s->data[s->top];
}
int bottom(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty\n");
exit(1);
}
return s->data[0];
}
int size(Stack *s) {
return s->top + 1;
}
void print_all(Stack *s) {
int i;
for (i = 0; i <= s->top; i++) {
printf("%d ", s->data[i]);
}
printf("\n");
}
int main() {
Stack s;
int i, x;
init(&s);
for (i = 0; i < 10; i++) {
scanf("%d", &x);
push(&s, x);
}
for (i = 0; i < 5; i++) {
printf("%d ", pop(&s));
}
printf("\n");
printf("Top: %d\n", top(&s));
printf("Bottom: %d\n", bottom(&s));
printf("Size: %d\n", size(&s));
print_all(&s);
printf("Size: %d\n", size(&s));
return 0;
}
```
如果你输入的是 1 2 3 4 5 6 7 8 9 10,那么程序的输出将会是:
```
5 4 3 2 1
Top: 6
Bottom: 10
Size: 5
10 9 8 7 6
Size: 0
```
其中,第一行输出的是连续出栈的5个元素,第二行输出的是栈顶元素,第三行输出的是栈底元素,第四行输出的是栈中元素个数,第五行输出的是栈中所有元素,第六行输出的是栈中元素个数。
阅读全文