算法笔记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;
}
相关推荐
ChoSeitaku5 分钟前
NO.94十六届蓝桥杯备战|图论基础-单源最短路|常规dijkstra|堆优化dijkstra|bellman-ford|spfa(C++)
c++·算法·图论
Alsn8615 分钟前
恶意外联情况监测-火绒、DNSLookupView(联网、禁用网卡、仅主机模式请求测试)
笔记
CP-DD20 分钟前
C/C++ 通用代码模板
c语言·开发语言·c++
孤蓬&听雨32 分钟前
Axure高保真AI算法训练平台
人工智能·算法·ai·产品经理·axure·原型设计
User_芊芊君子1 小时前
Java与C在典型场景下的性能对比深度剖析
java·c语言·开发语言
敲上瘾1 小时前
高并发内存池(四):内存释放原理与实现
c++·算法·缓存·线程·高并发内存池·池化技术
tkevinjd2 小时前
并查集(力扣1971)
算法·leetcode·图论·并查集
Dovis(誓平步青云)2 小时前
【数据结构】励志大厂版·初阶(复习+刷题):线性表(顺序表)
c语言·数据结构·经验分享·笔记·学习·算法·学习方法
是Dream呀2 小时前
深度学习算法:从基础到实践
人工智能·深度学习·算法
Y1nhl2 小时前
搜广推校招面经七十五
人工智能·深度学习·算法·机器学习·支持向量机·推荐算法·搜索算法