用C语言建立一个顺序栈。
时间: 2024-02-13 17:01:12 浏览: 26
下面是用C语言建立一个顺序栈的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义栈的最大容量
typedef struct {
int data[MAXSIZE]; // 存储栈的元素
int top; // 栈顶指针
} SeqStack;
// 初始化栈
void InitStack(SeqStack *s) {
s->top = -1; // 栈空时,top为-1
}
// 判断栈是否为空
int IsEmpty(SeqStack *s) {
return s->top == -1;
}
// 判断栈是否已满
int IsFull(SeqStack *s) {
return s->top == MAXSIZE - 1;
}
// 入栈
int Push(SeqStack *s, int x) {
if (IsFull(s)) {
printf("Stack Overflow\n");
return 0;
}
s->top++;
s->data[s->top] = x;
return 1;
}
// 出栈
int Pop(SeqStack *s, int *x) {
if (IsEmpty(s)) {
printf("Stack Underflow\n");
return 0;
}
*x = s->data[s->top];
s->top--;
return 1;
}
// 获取栈顶元素
int GetTop(SeqStack *s, int *x) {
if (IsEmpty(s)) {
printf("Stack is Empty\n");
return 0;
}
*x = s->data[s->top];
return 1;
}
int main() {
SeqStack s;
int x;
InitStack(&s);
Push(&s, 1);
Push(&s, 2);
Push(&s, 3);
Pop(&s, &x);
printf("Pop element: %d\n", x);
GetTop(&s, &x);
printf("Top element: %d\n", x);
return 0;
}
```
在这个顺序栈的实现中,我们使用了一个结构体来存储栈的元素和栈顶指针。通过定义初始化函数、判断栈空和栈满的函数、入栈、出栈和获取栈顶元素的函数,我们可以方便地对栈进行操作。在main函数中,我们对栈进行了初始化、入栈、出栈和获取栈顶元素的操作,并输出了相应的结果。