1. 使用C语言定义栈的顺序存储结构(SeqStack),栈中存储的数据元素为字符型数据元素,并实现栈的以下基本操作: (1)初始化,即建空栈; (2)元素进栈; (3)元素出栈; (4)取栈
时间: 2024-12-16 18:18:25 浏览: 1
表达式求值顺序栈实现包括小数点运算(C语言版).docx
在C语言中,我们可以使用数组来创建一个简单的顺序存储结构(SeqStack)来实现栈的功能。栈是一种后进先出(LIFO)的数据结构。以下是针对字符型数据元素的栈的简单定义以及基本操作的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 栈的最大容量
typedef struct {
char data[MAX_SIZE]; // 存储字符型数据的数组
int top; // 栈顶指针,用于跟踪栈的状态
} SeqStack;
// 初始化空栈
void init(SeqStack *s) {
s->top = -1;
}
// 元素入栈(压栈)
void push(SeqStack *s, char item) {
if (s->top == MAX_SIZE - 1) {
printf("Stack overflow.\n");
return;
}
s->data[++(s->top)] = item;
}
// 元素出栈(弹栈)
char pop(SeqStack *s) {
if (s->top == -1) {
printf("Stack underflow.\n");
return '\0'; // 返回空字符作为占位符
}
return s->data[s->top--];
}
// 取栈顶元素但不删除(peek)
char getTop(SeqStack *s) {
if (s->top == -1) {
printf("Stack is empty.\n");
return '\0'; // 返回空字符作为占位符
}
return s->data[s->top];
}
int main() {
SeqStack myStack;
init(&myStack);
push(&myStack, 'A');
push(&myStack, 'B');
push(&myStack, 'C');
printf("Top element is %c\n", getTop(&myStack));
printf("%c popped from stack\n", pop(&myStack));
return 0;
}
```
在这个实现中,`init()` 函数初始化栈为空,`push()` 将元素添加到栈顶,`pop()` 删除并返回栈顶元素,`getTop()` 获取但不删除栈顶元素。请注意,这个示例仅适用于小规模数据,对于大规模应用,可能需要考虑动态扩容。
阅读全文