c 语言顺序栈
时间: 2023-08-29 13:07:27 浏览: 144
CSS基础知识-1.pdf
顺序栈是一种基于数组的数据结构,它具有后进先出(LIFO)的特点。在 C 语言中,我们可以通过定义结构体和相应的操作函数来实现顺序栈。
以下是一个简单的顺序栈结构体定义:
```c
#define STACK_SIZE 100
typedef struct {
int data[STACK_SIZE];
int top;
} SeqStack;
```
其中,`data` 数组存储栈的元素,`top` 表示栈顶元素在 `data` 数组中的下标,初始化时应该为 `-1`。
接下来是一些常用的顺序栈操作函数实现:
```c
// 初始化栈
void init(SeqStack *s) {
s->top = -1;
}
// 判断栈是否为空
bool isEmpty(SeqStack *s) {
return s->top == -1;
}
// 判断栈是否已满
bool isFull(SeqStack *s) {
return s->top == STACK_SIZE - 1;
}
// 入栈
bool push(SeqStack *s, int x) {
if (isFull(s)) {
return false;
}
s->data[++s->top] = x;
return true;
}
// 出栈
bool pop(SeqStack *s, int *x) {
if (isEmpty(s)) {
return false;
}
*x = s->data[s->top--];
return true;
}
// 获取栈顶元素
bool getTop(SeqStack *s, int *x) {
if (isEmpty(s)) {
return false;
}
*x = s->data[s->top];
return true;
}
```
使用方法示例:
```c
int main() {
SeqStack s;
init(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
int x;
while (pop(&s, &x)) {
printf("%d ", x);
}
printf("\n");
return 0;
}
```
输出结果为:
```
3 2 1
```
这就是 C 语言中的顺序栈实现方法。
阅读全文