首页 > 其他分享 >关于手打栈(Stack)的最基本用法

关于手打栈(Stack)的最基本用法

时间:2023-07-07 22:35:17浏览次数:40  
标签:cout int top 用法 prt 打栈 MAXN push Stack

写在前面

这是本蒟蒻的第一篇博客。毕竟不是题解,也没有冠以题解的名号。作者就是个时常不带脑子的傻瓜,因此定有错误、不足之处,还请多多包涵,并欢迎批评指正!

栈(stack)是一种数据结构,在STL标准库中可以直接使用。具体地说,栈就是一种只允许在一端进行插入或删除操作的线性表。与队列作区分,栈类似于“桶”的概念,即其从一端插入数据,从同一端删除或冒出,数据呈先进后出。

push是栈的基本操作之一,即“压栈”,也就是将新元素插入栈的过程。

pop也是一种基本操作,即“退栈”,将栈顶元素删除。

top则是给出栈顶元素。

说明结束,进入正题

我们用数组实现栈的功能:

const int MAXN=105;//因为是演示,范围可以小一点 
int stack[MAXN],prt=0; //ptr表示栈长度

push:

void push(int x)
{
    if(prt>=MAXN)//长度达到MAXN代表栈溢出  
    {
        cout<<"Stack overflow!";//输出告警信号  
        return;
    }
    stack[prt]=x;//把相关变量赋值给栈的最后一位 
    prt++;//代表长度又增加一位 
}

pop:

void pop()
{
    if(prt==0)//检测是否空栈 
    {
        cout<<"The stack is empty!"; //空栈告警 
        return;
    }
    prt--;//直接将长度自减即可。由于有prt控制,原栈顶元素对程序无影响 
}

top:

int top()
{
    if(prt==0)//检测是否空栈 
    {
        cout<<"The stack is empty!"; //空栈告警 
        return;
    }
    return a[prt-1];//返回栈顶元素  
}

需要注意:

在判断栈溢出时,应注意加上等号,因为长度等于上限即无法压栈;

而判断栈空时,用等号即可。

由于prt表示长度,因此在输出top时要减1。

最终代码

#include<bits/stdc++.h>
using namespace std;
const int MAXN=105;
int stack[MAXN],prt=0; 
void push(int x)
{
    if(prt>=MAXN) 
    {
        cout<<"Stack overflow!"; 
        return;
    }
    stack[prt]=x;
    prt++;
}
void pop()
{
    if(prt==0) 
    {
        cout<<"The stack is empty!";  
        return;
    }
    prt--;
}
int top()
{
    if(prt==0)
    {
        cout<<"The stack is empty!"; 
        return;
    }
    return a[prt];  
}
int main()
{
    //进行需要的操作  
    return 0;
 } 

THE END~

标签:cout,int,top,用法,prt,打栈,MAXN,push,Stack
From: https://www.cnblogs.com/httony/p/17536209.html

相关文章

  • mac M2 多个 docker环境 colim 、docker for mac 、orbstack
    三个环境存在是会让docker命令混乱colim真实的路径/opt/homebrew/bin/docker->/opt/homebrew/Cellar/docker/24.0.2/bin/dockerdocker.sock~/.colim/run/docker.sockdockerformac真实的路径/usr/local/bin/docker->/Applications/Docker.app/Contents/Res......
  • rsync 用法教程
    rsynczabbix_agentd.log [email protected]:/tmp--progresshttp://www.ruanyifeng.com/blog/2020/08/rsync.html#Debian$sudoapt-getinstallrsync#RedHat$sudoyuminstallrsync#ArchLinux$sudopacman-Srsyncr如果apt-get没有命令:----linux系统......
  • 如何实现openstack架构的具体操作步骤
    OpenStack架构实现步骤首先,让我们一起了解一下OpenStack架构的实现步骤。我将使用下面的表格来展示每个步骤以及需要采取的行动。步骤行动1.确定需求和规划确定你要构建的OpenStack环境的需求,并进行详细的规划。这将包括确定要使用的OpenStack组件和服务,并确定其架构......
  • jQuery简单介绍与用法
    jQuery简单介绍与用法 一、jQuery简介1.简化DOM操作:jQuery提供了简单而强大的选择器,可以轻松地选取HTML元素,并对其进行操作。通过使用jQuery的方法,可以轻松地操纵元素的属性、样式、内容等。2.事件处理:jQuery简化了事件处理的过程。可以使用jQuery的事件绑定方......
  • 序列化的高级用法之source
    一、可以取别名book_name=serializers.CharField(source='name')book_name为前端可以看到的字段值,name是对象真实的属性。注意:别名和真实属性不能相同二、可以跨表关联查询publish_name=serializers.CharField(source='publish.name')必须有关联关系,book模型和publis......
  • Python中标准输入(stdin)、标准输出(stdout)、标准错误(stdout)的用法
    1.标准输入input()、raw_input()Python3.x中input()函数可以实现提示输入,python2.x中要使用raw_input(),例如:foo=input("Enter:")#python2.x要用raw_input()print("Youinput:[%s]"%(foo))#测试执行Enter:abcdeYouinput:[abcde]#读取一行(不......
  • Python中os.system()、subprocess.run()、call()、check_output()的用法
    1.os.system()os.system()是对C语言中system()系统函数的封装,允许执行一条命令,并返回退出码(exitcode),命令输出的内容会直接打印到屏幕上,无法直接获取。示例:#test.pyimportosos.system("ls-l|greptest")#允许管道符#测试执行$ll<=======......
  • openstack部署
    openstack部署1.基础环境准备1.1.主机名修改[root@slave2~]#hostnamectlset-hostnamecontroller[root@slave2~]#bash[root@controller~]##修改后hostname文件内容对应修改[root@controller~]#cat/etc/hostnamecontroller1.2.yum源配置#切换到yum目录[roo......
  • asyncore用法:
    asyncore用法使用asyncore模块创建域套接字的示例:importasyncoreimportsocketclassEchoServer(asyncore.dispatcher):def__init__(self,address):asyncore.dispatcher.__init__(self)self.create_socket(socket.AF_UNIX,socket.SOCK_STREAM)......
  • mybatis association 的用法(完整版)
    packagecom.tuling.tulingmall.domain;importcom.tuling.tulingmall.model.UmsMember;importcom.tuling.tulingmall.model.UmsMemberLevel;importlombok.Data;@DatapublicclassPortalMemberInfoextendsUmsMember{privateUmsMemberLevelumsMemberLevel;......