首页 > 其他分享 >栈:数组实现

栈:数组实现

时间:2024-07-18 14:40:07浏览次数:13  
标签:SeqStack cout 实现 void DataType IsEmpty 数组 Top

栈:数组实现

结构描述:

#define MAX 100
typedef int DataType;
class SeqStack {
public:
    DataType * A;
    int Top;


    void Init();
    void Push(DataType X);
    void Pop();
    DataType GetTop();
    void MakeEmpty();

    bool IsEmpty();
    bool IsFull();
};

初始化

把栈顶置为 -1 并给指针 A 分配内存。

void SeqStack::Init() {
    Top = -1;
    A = (DataType *)malloc(sizeof (DataType) * MAX);
}

判空、判满

栈空: Top == -1

栈满: Top = MAX - 1

bool SeqStack::IsEmpty() {
    return Top == -1;
}

bool SeqStack::IsFull() {
    return Top == MAX - 1;
}

入栈

  • 栈为满:报错
  • 栈不满:栈顶指针 + 1,把入栈的数据放在栈顶处。
void SeqStack::Push(DataType X) {
    if (IsFull()) {
        cout << "Stack Is Full!" << endl;
        exit(-1);
    }
    else {
        Top++;
        A[Top] = X;
    }
}

出栈

  • 栈空:报错
  • 非空:栈顶指针 -1
void SeqStack::Pop() {
    if (IsEmpty()) {
        cout << "Stack Is Empty!" << endl;
        exit(-1);
    }
    else {
        Top--;
    }
}

获取栈顶元素

  • 栈空:报错
  • 非空:返回元素
DataType SeqStack::GetTop() {
    if (IsEmpty()) {
        cout << "Stack Is Empty!" << endl;
        exit(-1);
    }
    else {
        return A[Top];
    }
}

摧毁

如果栈不为空,就一直出栈,直至栈空

void SeqStack::MakeEmpty() {
    while (!IsEmpty()) {
        cout << A[Top] << " ";
        Pop();
        cout << "Has Been Poped!" << endl;
    }

    cout << "Stack Has Been Completed!" << endl;
}

标签:SeqStack,cout,实现,void,DataType,IsEmpty,数组,Top
From: https://www.cnblogs.com/codels/p/18309488

相关文章

  • C++ 返回数组指针简单测试
    C++返回数组指针简单测试:#include<iostream>staticconstsize_tARR_SIZE=10;staticintarr[ARR_SIZE];//更新数组#defineUPDATE_ARR_DATA(i)for(size_tj=0;j<ARR_SIZE;++j)\{\a......
  • C 语言实例 - 数组拆分与合并
    将一个数组拆分为两个数组,一个为奇数数组,一个为偶数数组实例#include<stdio.h>intmain(){intarray[10]={0,1,2,3,4,5,6,7,8,9};inteven[10],odd[10];intloop,e,d;e=d=0;for(loop=0;loop<10;loop++){......
  • Stable Diffusion【进阶篇】:真人漫改之图生图实现
    所谓真人漫改,就是把一张真人的图片生成一张新的二次元的图片,在StableDiffusion中,有很多方式实现,其中通过图生图的方式是最常用的方式,大概1-3分钟就可以完成。本文我们系统的讲解一下。下面我们来详细看一下图生图实现真人漫改的具体实现方式。【第一步】:图生图图片上......
  • Stable Diffusion【进阶篇】:真人漫改之IP-Adapter实现
    大家好,今天我分享真人漫改实现方式:借助ControlNet的IP-Adapter控制模型,IP-Adapter控制模型是由腾讯研究院出品的一个新的ControlNet模型,关于该模型可以理解为图片提示词,类似于MD垫图的效果,但是比tagger标签器提取出图片的元素构成效果更好。它不仅参考图片的风格、光影特效......
  • Stable Diffusion ControlNet垫图:IP-Adapter实现图片风格迁移
    IP-Adapter实现的SD垫图功能对我们的图片处理非常有用,后面我们会进行一系列IP-Adapter的应用分享,通过具体的实例真正看到IP-Adapter的强大。文章使用的AI工具SD整合包、各种模型插件、提示词、AI人工智能学习资料都已经打包好放在网盘中了,无需自行查找,有需要的小伙伴下方扫......
  • 基于DrissionPage实现淘宝商品信息的批量获取
    摘要本文章主要讲解如何利用DrissionPage来避开淘宝的反爬机制,批量获取商品信息并保存到xlsx表格文件中,用于数据分析或深度学习模型的训练。(注:本文代码为一步一步调试出来的测试版,只是提供调试思路以及初步实现,并不能作为高效的成品程序,如有需要还请各位自行编写喵)1.淘宝......
  • Python数据可视化之numpy的11个常用的创建数组的函数
    numpy库在处理成千上万的数据时,Python的1维列表已经不适合来对数据进行处理,效率会很慢,所以numpy就诞生了,他可以将列表变成数组,而数组可以是1维、2维、3维甚至更高纬度,可用于存储和处理大型的矩阵,此外numpy提供了大量的数学函数,包括数学、逻辑、形态操作、排序、选择,输出和......
  • Qt实现仪表盘-自定义控件
            仪表盘在很多汽车和物联网相关的系统中很常用,本文就来介绍一下Qt 仪表盘的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。一、简述         使用Qt绘制一个仪表盘,用来显示当前的温度,绘制刻度、绘制数字......
  • QT利用QPainter实现自定义圆弧进度条组件
               在可视化应用中,弧形进度条应用也比较广泛,本文示例封装了一个可复用、个性化的弧形进度条组件。本文示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。主要结构就是外围一圈圆角进度,中间加上标题和对应进度的百分比,进度条的起始角......
  • uniapp [全端兼容] - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海
    前言如果需要Vue版本,请访问这篇文章。在uni-app全平台兼容(H5网页网站、支付宝/微信小程序、安卓App、苹果App、nvue)项目开发中,详解免费安装使用“海康威视监控摄像头”在网页中对接设备并进行实时显示监控画面及各种功能操作控制教程,对接海康视频监控播放及回放......