顺序栈练习

news/2024/7/7 20:21:26

顺序栈练习

相关内容:
1.判断顺序栈栈满的两种方式
2.一张图理解栈顶指针加加减减的问题
3.栈的顺序存储结构(顺序栈)

//顺序栈的初始化、判空、入栈、出栈、读取栈顶元素
//顺序栈的结构:数组、栈顶指针(本质是下标)
#include<stdio.h>
#define MAXSIZE 10
typedef int Status;
#define TRUE 1
#define FALSE 0
typedef struct
{
    int data[MAXSIZE];
    int top;//栈顶指针指向栈顶元素是上一个位置
}SqStack;
//顺序栈的初始化:初始化栈顶指针
Status InitSqStack(SqStack *S){
    S->top=-1;
    return TRUE;
}
//顺序栈的判空(使用前,不是使用时):栈顶指针为-1
Status isEmpty(SqStack *S){
    if (S->top==-1)
        return TRUE;
    else
        return FALSE;
}
//顺序栈的入栈:判满,栈顶指针+1,添加元素
Status Push(SqStack *S,int e){
    if (S->top==MAXSIZE-1)//判满
        return FALSE;
    S->data[++S->top]=e;//先使用top后++
    return TRUE;
}
//顺序栈的出栈:判空,栈顶元素出栈,栈顶指针-1
Status Pop(SqStack *S,int *e){
    if (S->top==-1)//判空
        return FALSE;   
    else{
        *e=S->data[S->top--];
        return TRUE;
    }
}
//顺序栈的读取栈顶元素:判空,返回元素
Status GetElem(SqStack *S,int *e){
    if (S->top==-1)//判空
        return FALSE;   
    else{
        *e=S->data[S->top];
        return TRUE;
    }
}
int main(){
    int n,e;
    SqStack S;
    InitSqStack(&S);
    printf("初始化完成!\n");
    if (!isEmpty(&S))//使用前判空
        printf("栈空!\n");
    printf("输入需要进栈的元素个数:");
    scanf("%d",&n);
    for (size_t i = 0; i < n; i++)
    {
        printf("输入第%d个进栈元素:",i+1);
        scanf("%d",&e);
        Push(&S,e);
    }
    GetElem(&S,&e);
    printf("栈顶元素为:%d\n",e);
    printf("所有元素出栈\n");
    for (size_t i = 0; i < n; i++)
    {
        printf("输出第%d个出栈元素:",i+1);
        Pop(&S,&e);
        printf("%d\n",e);
    }
    return 0;
}


http://lihuaxi.xjx100.cn/news/1752861.html

相关文章

CMake引用OSG

从CMake执行find_package(OpenSceneGraph REQUIRED COMPONENTS osgDB osgUtil)这句;情况如下; 当前OSG已经安装好;环境变量添加了OSG_ROOT(其值是OSG安装的根目录),并且 %OSG_ROOT%\bin 添加到了path; 有一个警告,已经done了; Found osgDB: optimized;D:/OSGEarth/l…

【深度学习】Yolov8 区域计数

ref&#xff1a;https://github.com/ultralytics/ultralytics/blob/main/examples/YOLOv8-Region-Counter/readme.md 很长时间没有做yolov的项目了&#xff0c;最近一看yolov8有一个区域计数的功能&#xff0c;不得不说很实用啊。

一篇文章带你学会MybatisPlus~

实现MybatisPlus的简单使用&#xff1a; 数据库准备部分&#xff1a; //创建名为mybatisPlus的数据库 create database mybatisPlus;//使用该数据库 use mybatisPlus;//创建user表 CREATE TABLE user( id bigint(20) NOT NULL COMMENT 主键ID , name varchar(30) DEFAULT NUL…

Python虚拟环境相关

写深度学习代码前&#xff0c;总要把Github上许多开源代码下下来跑一下。不同的项目有不同的运行环境&#xff0c;因此&#xff0c;就免不了为每个项目配置不同的库。本科的时候嫌虚拟环境太麻烦&#xff0c;就直接略过没学&#xff0c;现在还是得来补课。 一般而言&#xff0…

CCLINK IEFB总线转ETHERNET/IP网络的协议网关使欧姆龙和三菱的数据互通的简单配置方法

想要实现CCLINK IEFB总线和ETHERNET/IP网络的数据互通。 捷米JM-EIP-CCLKIE是一款ETHERNET/IP从站功能的通讯网关&#xff0c;该产品主要功能是实现CCLINK IEFB总线和ETHERNET/IP网络的数据互通。本网关连接到ETHERNET/IP总线和CCLINK IEFB总线上都可以做为从站使用。网关分别…

【漏洞复现】Drupal_小于7.32版本 _“Drupalgeddon” SQL注入漏洞(CVE-2014-3704)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 说明内容漏洞编号CVE-2014-3704漏洞名称Drupal “Drupalgeddon” SQL注入漏洞漏洞…

docker的使用以及注意事项

ssh的登录 1.登录ssh ssh 用户名IP地址 2.生成密钥 ssh-keygen生成密钥&#xff0c;在.ssh文件夹中&#xff08;如果没有自己生成一个&#xff09; 如果密钥之前已经生成过&#xff0c;可能在配置git的时候&#xff0c;会报错:这个密钥已经使用过的报错 解决方法是:otherwise[…

十种常见典型算法

什么是算法&#xff1f; 简而言之&#xff0c;任何定义明确的计算步骤都可称为算法&#xff0c;接受一个或一组值为输入&#xff0c;输出一个或一组值。&#xff08;来源&#xff1a;homas H. Cormen&#xff0c; Chales E. Leiserson 《算法导论第3版》&#xff09; 可以这样理…