先进后出——堆栈(Stack)

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

  • 类型名称: 堆栈(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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,353评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,125评论 18 399
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 9,265评论 0 6
  • 我化身亿万,世上他人,都是我的其他可能性。每每相见,我都欢欣喜悦。世上万物,都是我的其他可能性,每每相见,我都欢欣...
    唐森取经阅读 8,176评论 0 3
  • 不加班的周末才是真周末。
    瘦成闪电666阅读 2,701评论 0 0