1.创建一个顺序字符类型的栈,栈的长度是20,依次实现ABCD 个字符的人队、读栈顶元素,然后依次出栈一个元素,输出出栈的元值,并读栈顶元素.用C语言实现
时间: 2024-12-22 21:26:17 浏览: 9
在C语言中,我们可以使用数组和索引来创建一个简单的顺序栈结构。由于栈的长度固定为20,我们可以直接初始化一个字符数组作为栈。这里是一个简化的实现,包括入栈、出栈以及读取栈顶元素的功能:
```c
#include <stdio.h>
#define MAX_SIZE 20
// 定义栈结构
typedef struct {
char stack[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void init(Stack* s) {
s->top = -1;
}
// 入栈函数
void push(Stack* s, char c) {
if (s->top < MAX_SIZE - 1) {
s->stack[++s->top] = c;
} else {
printf("Stack overflow!\n");
}
}
// 出栈函数
char pop(Stack* s) {
if (s->top == -1) {
return '\0'; // 表示栈空,返回特殊字符表示
} else {
return s->stack[s->top--]; // 返回栈顶元素并减少栈顶指针
}
}
// 读栈顶元素但不移除
char peek(Stack* s) {
return s->top == -1 ? '\0' : s->stack[s->top]; // 返回栈顶元素,但不改变栈的状态
}
int main() {
Stack myStack;
init(&myStack);
// 入栈
push(&myStack, 'A');
push(&myStack, 'B');
push(&myStack, 'C');
push(&myStack, 'D');
// 读取并打印栈顶元素
printf("Top element before popping: %c\n", peek(&myStack));
// 出栈并打印
char poppedElement = pop(&myStack);
printf("Popped element: %c\n", poppedElement);
// 再次读取栈顶元素
printf("Top element after popping: %c\n", peek(&myStack));
return 0;
}
```
在这个程序中,我们首先初始化了一个栈,然后依次将字符`A`, `B`, `C`, 和 `D` 入栈。接着我们先读取栈顶元素,然后弹出并打印出栈顶的字符,最后再次读取栈顶元素。
阅读全文