算法笔记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;
}
相关推荐
Dream it possible!1 小时前
LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)
算法·leetcode·面试·动态规划
心抵鹊2 小时前
算法之双指针系列(一)
算法·leetcode
一个人旅程~2 小时前
关于imac27inch因改短用户名导致混合硬盘和系统崩溃的问题分析与故障解决
经验分享·笔记·macos·新浪微博
十二2 小时前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯
心祭丫丫2 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
小此方3 小时前
[算法实战论:动态规划]回文串问题的dp解法,回文串问题的母题,以及以此为基础的派生题
算法·动态规划
Pniubi3 小时前
力扣560.和为k的子数组
算法·leetcode·职场和发展
D e re k ZH4 小时前
C++ 从零入门(一):基础语法与程序结构
数据结构·c++·算法
派大猩猩_4 小时前
Obsidian 笔记怎么同步多端:Nutstore Sync 大笔记库同步测评
笔记·obsidian·obsidian插件·obsidian同步
Pniubi4 小时前
力扣438.找到字符串中所有字母异位词
算法·leetcode·职场和发展