数据结构c语言-顺序栈
时间: 2023-12-04 13:36:32 浏览: 123
顺序栈是一种基于数组实现的栈,它的特点是具有随机存取的特性。顺序栈的基本运算包括进栈、出栈和查看栈顶元素。进栈操作将元素插入到栈顶,出栈操作将栈顶元素删除并返回,查看栈顶元素操作返回栈顶的元素值,但不修改栈的状态。
在C语言中,顺序栈的存储结构可以使用一个一维数组来存放栈中的元素,同时使用一个指示器top来指示栈顶的位置。在进行进栈和出栈操作时,需要更新top的值,使其指向栈顶元素。
下面是一种常见的顺序栈的定义和基本操作的示例代码:
```c
// 定义栈中元素的数据类型
typedef int StackElementType;
// 定义顺序栈的存储结构
#define Stack_Size 100 // 栈的最大容量
typedef struct {
StackElementType elem[Stack_Size]; // 用数组存放栈中元素
int top; // 栈顶指针
} SeqStack;
// 初始化顺序栈
void Init_SeqStack(SeqStack *S) {
S->top = -1; // 初始时栈为空,栈顶指针置为-1
}
// 进栈操作
void Push_SeqStack(SeqStack *S, StackElementType x) {
if (S->top == Stack_Size - 1) {
printf("栈已满,无法进栈");
return;
}
S->top++; // 栈顶指针加1
S->elem[S->top] = x; // 将新元素放入栈顶位置
}
// 出栈操作
StackElementType Pop_SeqStack(SeqStack *S) {
if (S->top == -1) {
printf("栈为空,无法出栈");
return -1; // 返回一个特殊值表示出错
}
StackElementType x = S->elem[S->top]; // 获取栈顶元素的值
S->top--; // 栈顶指针减1
return x; // 返回栈顶元素的值
}
// 查看栈顶元素
StackElementType GetTop_SeqStack(SeqStack *S) {
if (S->top == -1) {
printf("栈为空");
return -1; // 返回一个特殊值表示出错
}
return S->elem[S->top]; // 返回栈顶元素的值
}
```
阅读全文