便携式c语言代码实现顺序栈的表示
时间: 2024-06-12 20:10:08 浏览: 90
便携式C语言代码实现顺序栈的表示可以通过结构体和动态内存分配来实现。首先定义一个结构体来表示栈,包括栈顶指针和栈的最大容量,然后使用malloc函数动态分配内存来创建一个栈数组,最后实现入栈、出栈、判断栈空和栈满等操作即可。
以下是代码示例:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *data; // 栈数组
int top; // 栈顶指针
int capacity; // 栈的最大容量
} Stack;
// 初始化栈
void initStack(Stack *s, int capacity) {
s->data = (int *)malloc(sizeof(int) * capacity);
s->top = -1;
s->capacity = capacity;
}
// 判断栈空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈满
int isFull(Stack *s) {
return s->top == s->capacity - 1;
}
// 入栈
void push(Stack *s, int x) {
if (isFull(s)) {
printf("Stack is full.\n");
return;
}
s->data[++s->top] = x;
}
// 出栈
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty.\n");
return -1;
}
return s->data[s->top--];
}
// 获取栈顶元素
int top(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty.\n");
return -1;
}
return s->data[s->top];
}
// 测试代码
int main() {
Stack s;
initStack(&s, 5);
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("%d\n", top(&s));
printf("%d\n", pop(&s));
printf("%d\n", pop(&s));
printf("%d\n", pop(&s));
printf("%d\n", pop(&s));
return 0;
}
```
阅读全文