目录
栈
- 栈是一种后进先出(LIFO)的数据结构。
- 栈的基本操作包含清空(clear)、获取栈内元素个数(size)、判空(empty)、进栈(push)、出栈(pop)、取栈顶元素(getTop)。
栈的C语言实现
定义数据结构
c
复制代码
#include <stdio.h>
#include <stdbool.h>
#define MaxSize 10000
typedef int ElemType;
typedef struct Stack {
ElemType data[MaxSize]; // 数组实现栈
int top; // 栈顶指针
} Stack;
清空
c
复制代码
void clear(Stack *s) {
s->top = -1; // 将栈顶指针置为-1;
}
判空
c
复制代码
bool empty(Stack s) {
return s.top == -1;
}
获取栈内数据元素个数
c
复制代码
int size(Stack s) {
return s.top + 1;
}
进栈
c
复制代码
bool push(Stack *s, ElemType e) {
if (s->top == MaxSize - 1) // 判满
return false;
s->data[++s->top] = e; // 栈顶指针后移->进栈
return true;
}
出栈
c
复制代码
bool pop(Stack *s) {
if (empty(*s)) // 判空
return false;
s->top--; // 栈顶指针前移
return true;
}
取栈顶元素
c
复制代码
bool getTop(Stack *s, ElemType *x) {
if (empty(*s)) // 判空
return false;
*x = s->data[s->top]; // 获取栈顶元素
return true;
}