栈的基本操作(C语言版)

C语言实现的栈操作(基于数据结构(C语言版)) C语言实现的栈操作(基于数据结构(C语言版)), 栈的基本操作包括初始化,销毁,设置为空栈,出栈和入栈 立即下载

概念

一种特殊的线性表,只能在固定的一端进行插入和删除操作,这个固定的一端称为栈顶,另外一端称为栈底,没有任何元素的栈称为空栈!!


栈的特性

先进后出或者说后进先出!!
另外,栈分为顺序栈以及链式栈。


栈的功能

将数据从一种序列改变为另外一种序列(改变数据序列)


栈的基本操作

动态顺序栈的结构体———>其中包括动态数组(_array),空间容量(_capacity)以及元素个数(_top)

typedef int DataType;
typedef struct StackD
{
    DataType* _array;
    int _capacity;
    int _top;
}StackD;

栈的初始化

// 栈的初始化 
void StackDInit(StackD* s, int capacity)
{
    assert(s);                         //参数检测

s->_array = (DataType*)malloc(sizeof(DataType)* capacity);           // 申请空间
if (NULL == s->_array)                                           //判空
{
    assert(0);
    return;
}

s->_capacity = capacity;                                    //重置容量
s->_top = 0;                                                //无元素,top为零
}

入栈和出栈操作

// 入栈 
void StackDPush(StackD* s, DataType data)
{
    assert(s);                                         //参数检测

if (s->_top < s->_capacity)                         //栈未满,直接入栈
{
    s->_array[s->_top] = data;
    s->_top++;                               
}
else                                                //栈已满,扩容后再入栈
{
    int capacity = 2 * s->_capacity;
    s->_array = (DataType*)realloc(s->_array, sizeof(DataType)*capacity);          //扩容
    s->_capacity = capacity;                                                   //重置容量
    s->_array[s->_top] = data;                                            //入栈
    s->_top++;
}
}

// 出栈
void StackDPop(StackD* s)
{
    assert(s);                                    //参数检测

if (StackDEmpty(s))
{
    printf("栈已空,无法出栈!!\n");
    return;
}
else                           //栈顶减一即出栈
    s->_top--;
}

获取栈顶元素、获取栈中元素个数以及判断栈是否为空

// 获取栈顶元素 
DataType StackDTop(StackD* s)
{
    assert(s);                            //参数检测

if (StackDEmpty(s))
{
    printf("栈已空,无栈顶元素!! \n");
    return 0;
}

return s->_array[s->_top - 1];
}

// 获取栈中元素个数 
int StackDSize(StackD* s)
{
    assert(s);

return s->_top;
}

// 检测栈是否为空 
int StackDEmpty(StackD* s)
{
    assert(s);

    if (0 == s->_top)
    return 1;
else
    return 0;
}

栈的应用

1、括号匹配问题!
2、逆波兰表达式(后缀表达式)问题!
3、迷宫问题!

想这三个问题的解决方式,记得关注一下哦!!或者点开我的主页,进行查看!!
三天之内解决以上问题!!!
这里写图片描述

一、Abaqus CAE 入门操作(薄膜应力计算) 阅读详情

相关推荐

中国高精度年度平均气温栅格数据集(1901-2024)

本文基于中国月度平均气温栅格数据集,计算生成1901-2024年1km分辨率的年度平均气温数据集,并按中国省市行政区划进行裁剪。该数据集融合CRU全球数据和WorldClim高分辨率数据,经496个站点验证,具有高时空精度和长时间序列特点,覆盖全国(含港澳台)逾百年气温记录,为气候变化研究、生态水文分析及农业生产评估等提供重要数据支撑。数据格式为Tif,单位为0.1℃,可获取全国、各省及各市三个尺度的气温栅格数据。

PPdata_Academy的博客 1244

C 语言实现栈的基本操作

typedef struct Stack{ //定义栈的结构//栈的最大规格int* data;//定义栈中存储数据的形式int top;//定义栈顶int lower;//定义栈底//判断栈是否为满了//判断栈是否为空//创建栈//将元素压入栈内//得到栈的最顶层元素。

2401_84436253的博客 1691

使用fluent计算流噪声_Fluent能够做的事

刚接触到fluent的同学们,应该会比较好奇,fluent能够做些什么事情,和你的研究有没有关联,能不能达到你的目的?如果不弄明白这样一点,前期可能会做很多无用功。 fluent是计算流体力学的软件,是一个工具。这样一个工具发展至今,可以用来模拟的绝不只有流体力学。下面我们依次来说明。首先是流动,fluent提供了非常丰富的流动模型,不仅可以模拟层流,同样还可以模拟...

weixin_28717647的博客 4857

栈的基本操作(C语言实现)

期末终于结束,接下来就会继续更新数据结构相关的内容了,本篇文章带来数据结构——栈,来实现它的基本功能。难度偏低,因为之前我们已经实现过顺序表了,栈不过是顺序表的一种特殊形式。接下来我们来看看我们栈的类型定义以及我们此次要实现的功能。...

Brant_zero的博客 1万+

DC算法竞赛——北京PM2.5浓度回归分析

北京PM2.5浓度回归分析 比赛结果(118/1150) 一. 概述 1、项目来源:https://www.dcjingsai.com/static_page/cmpList.html 2、给定数据字段如下: 3、使用方法:回归算法 4、目的:预测北京pm2.5值,使平均预测误差越小越好。 二、分析过程 setwd("E:/R数据源") #读入数据 data <- read.csv('p...

玻璃球的博客 3474

SerDes系列之如何选择AC耦合电容

交流耦合电容用于隔离PCB互连时的直流分量(Common-mode voltage),同时传递交流分量(Voltage swing),其作用类似于一个高通滤波器,但是,如果电容容值选取不当,使用过程中会产生信号质量问题,典型的应用场景:当包含相同的长串1或0的NRZ数据应用于该高通滤波器时,会发生低频电压跌落,导致低频模式相关抖动(PDJ)。

一只豌豆象的博客 2351

数据结构学习——C语言对栈的基本操作

栈(Stack)是一种常用的数据结构,遵循先进后出(LIFO)的原则,对表尾进行操作,常用于临时存储和撤销等操作,其基本操作包括栈的创建、入栈(也叫压栈Push)、出栈(又称弹栈)、栈的遍历、栈的清空(clear)、栈的销毁(destroy)等。

weixin_63586719的博客 7863

【图像拼接(Image Stitching)】关于【图像拼接论文精读】专栏的相关说明,包含专栏使用方法、阅读顺序、创新思路、文章汇总、源码汇总、数据集汇总等。总之,【图像拼接论文相关】看这一篇就够了

为什么会有这篇文章?因为专栏简介里写不下太多东西,只能通过这篇文章和大家交流,算是一个专栏阅读指南吧。说点心里话本来吧,我只想用优快云来记录自己学习【图像拼接】领域论文的过程,对每篇文章有个细致的理解,方便自己反复查阅。设置为付费也是因为涉及论文和本人其他项目需要,防止查重和其他问题,所以价格最开始设置的是专栏付费价格里最高的。起初,确实没有人看,一切也都平淡地度过着。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 4万+

栈的基础细节(c语言)(全部代码,详细图解):入栈,出栈,获取栈中数据个数,栈顶数据等.....

栈的基础(详细的图解):(栈的创建,栈初始化,入栈,出栈,获取栈中数据个数,获取栈顶数据,注销栈....)

好作息,好心态,多锻炼,多学点,多钻研 3731

[系统安全] 十六.PE文件逆向基础知识(PE解析和PE编辑工具)

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~ 作者前面介绍了三个漏洞,包括Chrome浏览器保留密码渗透解析、通过Chrome浏

杨秀璋的专栏 1万+

文献综述三大痛点用AI轻松解决!借助Gemini 3 Pro搞定检索难、阅读慢、框架乱问题(附 AI 提示词)

4)“漏斗式”结构:先介绍宏观领域的研究现状,再缩小范围,聚焦于与你课题直接先关的子领域,深入探讨与你研究变量直接相关的文献, 指出前人没做过、没做全或结论有矛盾的地方,再顺势提出你的研究课题,这种结构逻辑最清晰,能直接引导读者发现你研究的必要性。想要有针对性的搜到相关文献,必须先把模糊的研究题目拆解成精准的检索语言,这个时候就需要建立一个关键词矩阵,如核心词、同义词、学术术语、上下位词,以及对应的英文表达。请围绕【我的研究主题/关键词】,检索近5年发表的高被引的中英文文献,优先选择顶刊综述/论文。

智能AI让学术科研更容易 277

C语言栈基本操作

【代码】C语言顺序栈基本操作。

qq_27638851的博客 2301

第18章:AI辅助Debug——如何将错误日志交给AI定位根因

> - 如何将错误日志、堆栈、代码片段组合发给AI,快速定位问题根因 > - AI分析错误的3个核心维度:环境差异、逻辑缺陷、并发竞态 > - 常见错误的AI分析Prompt模板(前端报错、后端异常、数据库错误、网络请求失败) > - 一个完整的调试案例:从用户报错到找出问题根源的全过程 > - 我如何用AI把平均调试时间从2小时缩短到20分钟

sfishfly的博客 44

《数据结构》C语言版 栈的基本操作实现

严蔚敏数据结构C语言实现栈的基本操作 源码如下: #include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define OVERFLOW -1 #define OK 1 #define ERROR 0 typedef int Status; typedef int SElemType; typedef struct { SElemType* bas

Cherish599的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【数据结构】 链栈的基本操作 (C语言版)

【数据结构】 链栈的基本操作 (C语言版)

weixin_56814370的博客 6461

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

栈的基本操作(C语言版):入栈,出栈,输出栈

#include #define MAXN 10 int push(int *stack,int maxn,int *toppt,int x) //调用时不加&是因为push(&s,Maxn,&top,i)中s是数组元素,其名字代表数组首地址 { if(*toppt>=maxn) return 1;//栈满 stack[*toppt]=x;//第一步操作,保证元素在0位置处

Search,Research 1万+

C语言版:链栈的建立和基本操作

C语言版:数据结构链栈的建立和基本操作 文章目录前言一、链栈的建立二、链栈的基本操作1.进栈2.出栈3.判断是否为空栈4. 取栈顶元素三、代码实现 前言 文章介绍:主要是针对初学习数据结构的同学的一些参考,后续也会更新一些思路, 本文章主要介绍的 链栈如何建立?,链栈的压栈, 出栈以及栈空和取栈顶元素, 在内存允许的情况,链栈没有栈满的情况 提示:以下是本篇文章正文内容,下面案例可供参考 一、链栈的建立 链栈的建立其实链表有相似之处,只不过本次我用的链栈的建立方法与链表的前插法一样,可能会有更好的方式

m0_53318344的博客 1638

链栈的基本操作 C语言版

#include<stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct Linknode { ElemType data; //数据域 struct Linknode *next; //指针域 } LiStack; //栈类型定义 //初始化链栈 void LiStack_HeadInsert(LiStack *L) { int x; LiStack *s; L = (LiStack*) ma

大数据开发 288

严蔚敏C语言版数据结构栈的九个基本操作

#include<stdio.h> #include<stdlib.h> #define ok 1 #define error 0 #define stack_init_size 100 //存储空间的初始分配量 #define stackincrement 10 //增加内存空间时的增量 typedef int status; t...

m0_46297137的博客 424

链式栈的基本操作——LinkStack(C语言版)

#include "stdafx.h" #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 /* 存储空间初始分配量 */ typedef int Status; typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为i

guoyong的专栏 2万+

数据结构之栈的基本操作(c语言版)

//栈的顺序存储 #include<stdio.h> #include<stdbool.h> #define MaxSize 50 #define ElemType char typedef struct{ ElemType data[MaxSize]; int top; }SqStack; //栈的初始化 void InitStack(SqStac...

qq_40842211的博客 545

数据结构 - C语言版 - 链栈 所有基本操作

C语言 - 链栈 所有基本操作 #include #include #include #define LEN 5 typedef struct Stack { int data; struct Stack * top; }Stack; Stack * Push_Stack(Stack * S) { Stack * p; int i; S = (Stack *) mal

W_Jp - 编程爱好者 1821

栈基本操作(顺序栈、共享栈、单链栈说明)C语言版

#include <stdio.h> #include <stdlib.h> #define MAXSIZE 50 typedef struct { int *data; int pop; }Sqstack; void Init(Sqstack *S) //初始化栈 { S->pop=-1; printf("-----...

qq_41635401的博客 359

数据结构 栈的基本操作(C语言版)

实现代码 #include <stdio.h> #include <stdlib.h> #include <math.h>//OVERFLOW //函数结果状态代码 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 //Status是函数的类型,其值是函数结果状态代码,邚OK等 typed...

weixin_43482612的博客 530

栈的基本操作的相关代码(C语言版)

虽然我的代码是用C语言写的,但是你们建立文件的时候记得创建C++文件哦! 废话不多说,直接上代码: 首先我们先建立起我们自己的头文件,并且将函数的声明放入头文件(在此我的头文件名称是:”Seqstack.h”)中(建立头文件的相关操作可参考我上一期文章) #ifndef SEQSTACK_H_INCLUDED #define SEQSTACK_H_INCLUDED #include<stdio.h> #include<assert.h> #include<malloc

Binary_huang的简介 1611

栈和队列的定义和基本操作(c语言版)

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 栈就可以理解为:先入后出(LIFO) Stack.h #pra...

【Dyson】的博客 8389
上一篇: 函数重载和引用(C++)
下一篇: 栈应用之括号匹配问题(C语言版)
Code_zx
博客等级 码龄9年 83粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值