代码实现:

/*顺序栈:实现接口:创建栈判栈空判栈满返回栈顶元素入栈出栈
*/
#include <stdio.h>
#include <stdlib.h>#define STACK_MAXLEN  20//定义栈结构
typedef struct stack
{int data[STACK_MAXLEN];int top;
}STACK_T;//创建栈
STACK_T *Create_Stack()
{STACK_T *NewSatck = NULL;NewSatck = malloc(sizeof(*NewSatck));if (NewSatck == NULL){return NULL;}NewSatck->top = -1;       //栈元素个数初始值return NewSatck;
}//判栈空
int Is_Empty(STACK_T *pStack)
{if (pStack->top < 0){printf("栈为空!\n");return -1;}return 0;
}//判栈满
int Is_Full(STACK_T *pStack)
{if (pStack->top == STACK_MAXLEN){printf("栈满!\n");return -1;}return 0;
}//返回栈顶元素
int Stack_Top(STACK_T *pStack)
{printf("当前栈元素个数:%d-------栈顶元素:%d\n", pStack->top+1, pStack->data[pStack->top]);return pStack->data[pStack->top];
}//入栈
int push(STACK_T *pStack,int data)
{//判栈满if (Is_Full(pStack) == -1){return -1;}pStack->data[++pStack->top] = data;return 0;
}//出栈
int pop(STACK_T *pStack)
{//判栈空if (Is_Empty(pStack) == -1){return -1;}printf("第%d个元素出栈: ", pStack->top+1);return pStack->data[pStack->top--];
}int main(int argc,const char *argv[])
{STACK_T *pStack = NULL;//创建栈pStack = Create_Stack();if (pStack == NULL){printf("Create_Stack failed.\n");return -1;}//入栈push(pStack, 10);Stack_Top(pStack);push(pStack, 20);Stack_Top(pStack);push(pStack, 30);Stack_Top(pStack);push(pStack, 40);Stack_Top(pStack);push(pStack, 50);Stack_Top(pStack);//出栈printf("%d\n", pop(pStack));printf("%d\n", pop(pStack));printf("%d\n", pop(pStack));printf("%d\n", pop(pStack));printf("%d\n", pop(pStack));printf("%d\n", pop(pStack));system("pause");return 0;}

执行结果:

C语言顺序栈简单实现相关推荐

  1. 停车场管理系统(C语言顺序栈+链栈+链队列)

    一.实验目的 1.根据停车场管理系统的要求,利用结构化程序设计方法以及C的编程思想来完成系统的设计,使用数据结构中的栈.队列进行分析: 2.按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用 ...

  2. c语言二进制转换算法栈,用C语言顺序栈实现十进制和二进制的转换

    用C语言顺序栈实现十进制和二进制的转换 #include #include #include #define M 100 typedef int datatype; typedef struct{ d ...

  3. 栈的删除函数c语言,顺序栈的插入和删除

    <顺序栈的插入和删除>由会员分享,可在线阅读,更多相关<顺序栈的插入和删除(5页珍藏版)>请在人人文库网上搜索. 1.实验四顺序栈的插入和删除姓名:学号: 日期:一.实验目的: ...

  4. c语言顺序栈完整程序,顺序栈的基本操作(C语言)

    由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址  但是这种用法好像C并不 ...

  5. C语言——顺序栈(Stack)

    定义:栈是限定仅在表尾进行插入或者删除操作的线性表.因此对栈来说,尾端有其特殊含义,称为栈顶(top),相应的表头端称为栈底(bottom).不含元素的空表称为空栈. 栈的特性:栈又称为先进后出的线性 ...

  6. C语言顺序栈实现代码

    顺序栈 :它是顺序表的一种,具有顺序表同样的存储结构,由数组定义,配合用数组下标表示的栈顶指针top(相对指针)完成各种操作. sqstack.h  //顺序栈头文件(在内存中分配一段连续的存储空间存 ...

  7. 顺序栈十进制转八进制C语言,顺序栈实现十进制跟八进制之间的转换

    顺序栈实现十进制和八进制之间的转换 顺序栈实现十进制和八进制之间的转换 (1)首先实现栈的初始化,既申请固定大小的数组空间,存储数据,用到的方法是 int InitStack(  struct  sq ...

  8. 判断字符串是否为回文(C语言 顺序栈)

    首先我们需要确定思路,如何用栈来判断字符串是否为回文. 1.栈是先进后出 2.回文是指正读反读均相同的字符序列 从这两点很容易就可以联想到一个方法,我们先将字符串全部存进去栈中,再将它全部出栈,进行对 ...

  9. 数据结构——顺序栈和链式栈的简单实现和解析(C语言版)

    摘自:数据结构学习--顺序栈和链式栈的简单实现和解析(C语言版) 作者:正弦定理 发布时间:2020-11-26 21:26:49 网址:https://blog.csdn.net/chineseko ...

最新文章

  1. 查看windows 端口进程
  2. QMsgPack的用法DEMO
  3. C#和VB的关键字的对照表
  4. VBScript数组函数
  5. wxt_hillwill的知识脉络
  6. 2021-2025年中国专业灯具行业市场供需与战略研究报告
  7. Spark 已死,Storm 已凉,Flink 永远滴神!
  8. 动词过去式和过去分词不规则变化
  9. 精美注册界面模板 HTML+CSS样式
  10. 《Photoshop 2020从入门到精通》读书笔记1
  11. 全球公开的DEM数据产品
  12. 攒外快网春节除夕夜红包抽奖活动预告
  13. java file 获取文件类型_Android中Java根据文件头获取文件类型
  14. 招聘网探究分析报告(以描述性分析为主)
  15. Jupyter Notebook误登出怎么办?
  16. SYN攻击原理以及防范技术
  17. arch linux u盘安装,从U盘安装archlinux-2009.08完整过程 - Leo's Utopia
  18. 随记1 MySQL之特殊字符(表情)的存储以及读取乱码问题
  19. 后疫情时代,藏在同程艺龙财报里的“增长密码”
  20. Cauchy–Schwarz inequality理解

热门文章

  1. 根据多个网络url打压缩包批量下载文件---java
  2. 【快速入门并掌握shell脚本编程】
  3. matlab blas加载错误,【求助】在MATLAB中通过MEX调用BLAS
  4. android设置点击间隔,巧用android:divider属性设置LinearLayout中元素之间的间隔
  5. Byte和byte的区别和联系
  6. html取消居中,HTML中的居中方法
  7. c语言程序10进制转2进制,C语言十进制数转换为二进制数
  8. 中学计算机课教具,中小学科学课的自制教具与使用
  9. Linux(程序设计):55---非阻塞connect(EINPROGRESS)
  10. asixs 响应慢_大智慧经典指标原理及用法