算法笔记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;
}
相关推荐
泉绮34 分钟前
LeetCode做题记录(第一天)198. 打家劫舍
算法·leetcode·职场和发展
空白诗34 分钟前
【JavaScript 算法】双指针法:高效处理数组问题
开发语言·javascript·算法
妙龄少女郭德纲35 分钟前
【游戏/社交】BFS算法评价用户核心程度or人群扩量(基于SparkGraphX)
算法·游戏·bfs·宽度优先
Blusher12 小时前
Leetcoede编程基础0到1——1768. 交替合并字符串& 389. 找不同&28. 找出字符串中第一个匹配项的下标 & 242.有效的字母异位词
算法·leetcode·模式匹配·编程基础0到1·1768. 交替合并字符串·389.找不同·字母异位词
一叶祇秋3 小时前
Leetcode - 周赛406
数据结构·算法·leetcode
Taerge01103 小时前
Scala学习笔记19: 隐式转换和隐式参数
笔记·学习·scala
我要学编程(ಥ_ಥ)3 小时前
数据结构之初始二叉树(2)
java·数据结构·算法
Joy ˇ3 小时前
【数据结构】手写快速排序
算法·排序算法
努力的派大星星3 小时前
【数据结构】高效解决连通性问题的并查集详解及Python实现
开发语言·数据结构·python·算法·并查集