算法笔记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;
}
相关推荐
C嘎嘎嵌入式开发1 分钟前
(10)100天python从入门到拿捏《Python中的数据结构与自定义数据结构》
数据结构·python·算法
熬了夜的程序员3 分钟前
【LeetCode】69. x 的平方根
开发语言·算法·leetcode·职场和发展·动态规划
一只小风华~6 分钟前
Vue Router 的三种历史模式详解
前端·javascript·vue.js·笔记·学习·前端框架·ecmascript
一只小风华~10 分钟前
Vue Router 导航守卫
java·前端·javascript·vue.js·笔记·html
Niuguangshuo11 分钟前
音频特征提取算法介绍
算法·音视频
Vect__17 分钟前
从底层到上层的“外挂”:deque、stack、queue、priority_queue 全面拆解
数据结构·c++
无限进步_21 分钟前
【C语言】杨辉三角:数学之美与编程实现的完美结合
c语言·开发语言
fengfuyao98526 分钟前
基于MATLAB的匈牙利算法实现任务分配
算法·数学建模·matlab
东方芷兰29 分钟前
LLM 笔记 —— 07 Tokenizers(BPE、WordPeice、SentencePiece、Unigram)
人工智能·笔记·深度学习·神经网络·语言模型·自然语言处理·nlp
CoovallyAIHub32 分钟前
超详细链式插补 (MICE) 多元插补:机器学习模型的高级缺失数据处理
算法·机器学习·计算机视觉