C语言实现顺序栈
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
最新文章
- SharePoint 2016 必备组件离线安装介绍
- 烂泥:LVM学习之KVM利用LVM快照备份与恢复虚拟机
- c++之路进阶——codevs4543(普通平衡树)
- C语言标准库函数strcpy与strcmp的简单实现
- http server v0.1_http_server.c
- 获取IP城市
- java学习笔记 (9) —— Struts2 国际化
- url编码方法(暂时知道是什么
- Git学习04 --分支管理
- 小鱼提问2 属性访问器中get,set再用public修饰行吗,private呢?
- CSF 中的应用程序请求路由
- JPA 系列教程8-双向一对一共享主键
- MySql三大范式与数据库设计和表创建常用语句
- 更自然的解决字典数组插入nil而导致crash
- NPOI导出WPF DataGrid控件显示数据
- mongodb3.6 副本集(三)mongodb 如何做数据备灾
- Java EE的未来
- HDU 6346 整数规划 (最佳完美匹配)
- 搞定所有的跨域请求问题 jsonp CORS
- ios APP改名推送名字还是旧的
热门文章
- Linux的那些事-系统启动(增加开机启动项)
- 【转载】STM32 ST-LINK Utility介绍、下载、安装、使用方法
- React之深入了解虚拟DOM
- 关于simplememory theme的设置和感想
- PMP--2.1 商业论证(经济可行性研究报告)
- [Wpf学习] 1.传说中的Main
- Android事件分发与责任链模式
- IoU-aware Single-stage Object Detector for Accurate Localization
- go微服务框架kratos学习笔记九(kratos 全链路追踪 zipkin)
- 4.python流程控制语句介绍