堆栈C语言实现

堆栈的抽象数据类型描述:

  • 类型名称: 堆栈(Stack)。
  • 数据对象集: 一个有 0 个或多个元素的又穷表。
  • 操作集: 长度为 max_size 的堆栈 S ∈ Stack, 堆栈元素 item ∈ ElementType。
  1. stack creatc_stack(int max_size): 生成空堆栈, 其最大长度为 max_size
  2. bool is_full(stack *s, int max_size): 判断堆栈 S 是否已满;
  3. void push(stack *s, element_type item): 将元素 item 压入堆栈;
  4. bool is_empty(stack *s): 判断堆栈 S 是否为空;
  5. 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 }
 
原文地址:https://www.cnblogs.com/tingshuo123/p/7090858.html