我的栈
来源:互联网 发布:java对接微信公众平台 编辑:程序博客网 时间:2024/04/30 13:05
/****功能:进栈出栈的操作***栈概念:[1]先进后出[2]只能从栈顶压入或弹出元素[3]进栈时栈顶先保存元素,再把栈顶+1;入栈时栈顶先-1,之后的栈顶值弹出*/#include<stdio.h>#define STACKSIZE 3/**********************************************************************************功能:入栈***参数:栈数组 要进的元素 保存栈顶top的地址&top***思想:元素进栈,先获得原来的栈顶top值,再让s[top]=元素;再top++;最后把变了的top值保存到原来的栈顶处*******************************************************************************/int push(int s[],int x,int *ptop){ int top;top=*ptop+1;if(top==STACKSIZE) //栈满了{printf("overflow\n");return 0;}else { s[top]=x;*ptop=top;return 1;}}/**********************************************************************************功能:出栈***参数:栈数组 要出去的元素 保存栈顶top的地址&top***思想:元素出栈,先获得原来的栈顶top值,再top-1就可以获取栈顶元素s[top-1];最后把变了的top值保存到原来的栈顶处*******************************************************************************/int pop(int s[],int *py,int *ptop){ int top;top=*ptop;if(top==-1) //栈空了{printf("stack empty\n");return 0;}else //没空,刚来已经获得栈顶的值top了,因为新元素进栈之后top才会+1的{ //所以呢top-1保存的是新元素的值;之后再把改变的top值保存到栈顶中*py=s[top];--top;*ptop=top;return 1;}}int main(){static int s[STACKSIZE];int top=-1,y;int i;for(i=0;i<STACKSIZE;i++){push(s,i,&top); //先进,位于栈顶;i是进去的元素;0 1 2printf("i[%d]=%d ",i,s[i]);}printf("\n");for(i=0;i<STACKSIZE;i++)//后进先出;y是出去的元素; 2 1 0{ pop(s,&y,&top);printf("o[%d]=%d ",i,y);}printf("\n");return 0;}
0 0
- 我的栈
- 我的技术栈
- 我写我的
- 我认识的我
- 我对栈的学习
- 我的第一个栈
- 我的栈和队列
- 我的``
- 我的
- 我的
- 我的
- 我的
- 我的
- 我的
- 我的
- 我的
- 我的
- 我的
- 【索引】Counting
- 【efm32】开发板 蓝牙测试
- 用IT技术玩金融系列文章
- Axis1.4生成和调用Webservice
- Android适配器之CursorAdapter
- 我的栈
- 单片机其实很简单--前言
- HDU 1003 Max Sum
- tomcat源码阅读-1
- win7系统下安装matlab并正确配置
- ESC键坏了,VIM代替键
- Dynamic collapsible动态加载collapsible
- 结构型模7:代理模式(Proxy Pattern)
- 【索引】Counting:Examples