堆栈的抽象数据类型描述:
- 类型名称: 堆栈(Stack)。
- 数据对象集: 一个有 0 个或多个元素的又穷表。
- 操作集: 长度为
max_size
的堆栈S
∈ Stack, 堆栈元素 item ∈ ElementType。
stack creatc_stack(int max_size)
: 生成空堆栈, 其最大长度为max_size
;bool is_full(stack *s, int max_size)
: 判断堆栈 S 是否已满;void push(stack *s, element_type item)
: 将元素item
压入堆栈;bool is_empty(stack *s)
: 判断堆栈S
是否为空;element_type pop(stack s)
: 删除并返回栈顶元素;
伪码描述:
1 #define MAX_SIZE 10 // 存储元素的最大个数
2 #define ERROE -1
3 #define bool int
4 #define True 1
5 #define Flase 0
6 // element_type 代表任意基本数据类型
7
8 typedef struct{ 9 element_type data[MAX_SIZE]; 10 int top; 11 } stack; 12
13 // 入栈
14 void push(stack *s, element_type item) 15 { 16 if (s->top < MAX_SIZE-1){ 17 s->data[(s->top)+1] = item; 18 s->top++; 19 } 20 } 21
22 // 出栈
23 element_type pop(stack *s) 24 { 25 element_type n = NULL; 26 if (s->top != -1){ 27 n = s->data[(s->top--)]; 28 } 29 return n; 30 } 31
32 // 判断堆栈是否为空
33 bool is_empty(stack *s) 34 { 35 bool flag = Flase; 36 if (s->top == -1){ 37 flag = True; 38 } 39
40 return flag; 41 } 42
43 // 判断堆栈是否已满
44 bool is_full(stack *s, int MAX_SIZE) 45 { 46 bool flag = Flase; 47 if (s->top == MAX_SIZE-1){ 48 flag = True; 49 } 50
51 return flag; 52 }