堆栈的抽象数据类型描述:
- 类型名称: 堆栈(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 }