算法笔记p245栈

目录

  1. 栈是一种后进先出(LIFO)的数据结构。
  2. 栈的基本操作包含清空(clear)、获取栈内元素个数(size)、判空(empty)、进栈(push)、出栈(pop)、取栈顶元素(getTop)。

栈的C语言实现

定义数据结构

c 复制代码
#include <stdio.h>
#include <stdbool.h>

#define MaxSize 10000

typedef int ElemType;

typedef struct Stack {
    ElemType data[MaxSize];     // 数组实现栈
    int top;                    // 栈顶指针
} Stack;

清空

c 复制代码
void clear(Stack *s) {
    s->top = -1;                // 将栈顶指针置为-1;
}

判空

c 复制代码
bool empty(Stack s) {
    return s.top == -1;
}

获取栈内数据元素个数

c 复制代码
int size(Stack s) {
    return s.top + 1;
}

进栈

c 复制代码
bool push(Stack *s, ElemType e) {
    if (s->top == MaxSize - 1)  // 判满
        return false;
    s->data[++s->top] = e;      // 栈顶指针后移->进栈
    return true;
}

出栈

c 复制代码
bool pop(Stack *s) {
    if (empty(*s))              // 判空
        return false;
    s->top--;                   // 栈顶指针前移
    return true;
}

取栈顶元素

c 复制代码
bool getTop(Stack *s, ElemType *x) {
    if (empty(*s))              // 判空
        return false;
    *x = s->data[s->top];       // 获取栈顶元素
    return true;
}
相关推荐
凉、介4 小时前
Armv8-A virtualization 笔记 (二)
笔记·学习·嵌入式·arm·gic
YL200404264 小时前
048路径总和III
数据结构·dfs
z200509304 小时前
每日简单算法题——————跟着卡尔
算法
智者知已应修善业4 小时前
【ICL8038芯片正弦波三角波方波发生器电路】2024-1-5
驱动开发·经验分享·笔记·硬件架构·硬件工程
探序基因5 小时前
身高与基因的关系
笔记
️是785 小时前
信息奥赛一本通—编程启蒙(3395:练68.3 车牌问题)
数据结构·c++·算法
Liangwei Lin6 小时前
LeetCode 118. 杨辉三角
算法·leetcode·职场和发展
计算机安禾6 小时前
【c++面向对象编程】第24篇:类型转换运算符:自定义隐式转换与explicit
java·c++·算法
鼠鼠我(‘-ωก̀ )好困6 小时前
leetGPU
算法
我星期八休息6 小时前
Linux系统编程—基础IO
linux·运维·服务器·c语言·c++·人工智能·算法