欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

先进后出——堆栈(Stack)

程序员文章站 2024-03-18 17:54:04
...

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

  • 类型名称: 堆栈(Stack)。
  • 数据对象集: 一个有 0 个或多个元素的又穷表。
  • 操作集: 长度为 max_size 的堆栈 SStack, 堆栈元素 itemElementType
  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): 删除并返回栈顶元素;

伪码描述:

#define MAX_SIZE 10  // 存储元素的最大个数
#define ERROE -1
#define bool int
#define True 1
#define Flase 0
// element_type 代表任意基本数据类型

typedef struct{
    element_type data[MAX_SIZE];
    int top;
} stack;

// 初始化一个栈
stack creatc_stack(void)
{
    stack *s = (stack*)malloc(sizeof(stack));
    s->top = -1;
    return s;
}

// 入栈
void push(stack *s, element_type item)
{
    if (s->top < MAX_SIZE-1){
        s->data[(s->top)+1] = item;
        s->top++;
    }
}

// 出栈
element_type pop(stack *s)
{
    element_type n = NULL;
    if (s->top != -1){
        n = s->data[(s->top--)];
    }
    return n;
}

// 判断堆栈是否为空
bool is_empty(stack *s)
{
    bool flag = Flase;
    if (s->top == -1){
        flag = True;
    }
    
    return flag;
}

// 判断堆栈是否已满
bool is_full(stack *s, int MAX_SIZE)
{
    bool flag = Flase;
    if (s->top == MAX_SIZE-1){
        flag = True;
    }
    
    return flag;
}