C语言实现顺序栈,顺便加深刻++i,++i的区别

#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
/*
写在前面的话:
(1).top是栈顶元素在数组中的索引,top为-1代表空

(2).i++是先用i再加1,++i是先加1再用i

(3).顺序栈的缺点是必须事先给栈分配一个大空间(maxsize),这显然浪费存储空间

(4).顺序栈里面的元素特点是先进后出*/
typedef struct stack
{
int data[maxsize] ;
int top ;
}* PSTACK ,STACK ;
void init_stack(PSTACK st);
void push(PSTACK st ,int val);
void pop(PSTACK st);
void show(PSTACK st);
int main()
{
STACK st ;
init_stack(&st);
push(&st,1);
push(&st,2);
push(&st,3);
push(&st,4);
pop(&st);
show(&st);
return 0 ;
}
void init_stack(PSTACK st)
{
st->top = -1;
printf("初始化成功\n");
}
void push(PSTACK st ,int val)
{
if(st->top == maxsize-1)
printf("Full\n") ;

else
{
//先自增;相当于2步,(1):st->top++ (2)st->data[st->top]=val
st->data[++st->top]=val;
}
}
void pop(PSTACK st)
{
if(st->top == -1)
printf("顺序表为NULL\n");

else
{
printf("出栈的值是:%d\n",st->data[st->top]);
st->top-- ;
}
}
void show(PSTACK st)
{
printf("栈里的值是:");
while(st->top!=-1)
{
//先计算后自减:(1):st->data[st->top] (2)st->top--
printf("%d ",st->data[st->top--]);
}
printf("\n");
}

部分参考:https://blog.csdn.net/hzphyt/article/details/81369508

最新文章

  1. SharePoint 2016 必备组件离线安装介绍
  2. 烂泥:LVM学习之KVM利用LVM快照备份与恢复虚拟机
  3. c++之路进阶——codevs4543(普通平衡树)
  4. C语言标准库函数strcpy与strcmp的简单实现
  5. http server v0.1_http_server.c
  6. 获取IP城市
  7. java学习笔记 (9) —— Struts2 国际化
  8. url编码方法(暂时知道是什么
  9. Git学习04 --分支管理
  10. 小鱼提问2 属性访问器中get,set再用public修饰行吗,private呢?
  11. CSF 中的应用程序请求路由
  12. JPA 系列教程8-双向一对一共享主键
  13. MySql三大范式与数据库设计和表创建常用语句
  14. 更自然的解决字典数组插入nil而导致crash
  15. NPOI导出WPF DataGrid控件显示数据
  16. mongodb3.6 副本集(三)mongodb 如何做数据备灾
  17. Java EE的未来
  18. HDU 6346 整数规划 (最佳完美匹配)
  19. 搞定所有的跨域请求问题 jsonp CORS
  20. ios APP改名推送名字还是旧的

热门文章

  1. Linux的那些事-系统启动(增加开机启动项)
  2. 【转载】STM32 ST-LINK Utility介绍、下载、安装、使用方法
  3. React之深入了解虚拟DOM
  4. 关于simplememory theme的设置和感想
  5. PMP--2.1 商业论证(经济可行性研究报告)
  6. [Wpf学习] 1.传说中的Main
  7. Android事件分发与责任链模式
  8. IoU-aware Single-stage Object Detector for Accurate Localization
  9. go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)
  10. 4.python流程控制语句介绍