算法笔记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;
}
相关推荐
遥感知识服务18 分钟前
Sentinel-1 + DEM + FwDET + 随机森林:从快速水深初估到多因子误差修正
算法·随机森林·sentinel
来一碗刘肉面28 分钟前
顺序表与链表的比较
数据结构·算法·链表
alphaTao33 分钟前
LeetCode 每日一题 2026/7/13-2026/7/19
算法·leetcode
dtq04241 小时前
C语言-结构体详解
c语言·开发语言·学习
QN1幻化引擎2 小时前
Dalin L — 我造了一门支持中文编程的语言,完整移植到 Rust 了
人工智能·算法·机器学习
Rainy Blue8832 小时前
C转C++速成
c语言·c++·算法
txzrxz2 小时前
二分图详解
数据结构·c++·算法·图论·深度优先搜索·二分图染色
一只小菜鸡..3 小时前
Stanford CS144 学习笔记 (四):网络拥塞控制与 AIMD 算法
网络·笔记·学习
gaosushexiangji3 小时前
数字图像相关DIC系统在结构振动模态测量中的应用
算法
Hammer_Hans3 小时前
DFT笔记82
笔记