堆棧的抽象數據類型描述:
- 類型名稱: 堆棧(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 }