栈的基本操作(C语言版):入栈,出栈,输出栈
2013-03-04 16:39
295 查看
#include<stdio.h> #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位置处 (*toppt)++; return 0; } int pop(int *stack,int *toppt,int *cp) { if(*toppt==0) return 1; (*toppt)--; *cp=stack[*toppt];//出栈元素的临时保存位置,结合main函数里出栈元素为i,按地址传值 return 0; } void OutputStack(int *stack,int toppt) { int i; for(i=toppt-1;i>=0;i--) { printf("%d",stack[i]); printf("\n"); } } void main() { int s[MAXN],i; int top=0; int op; while(1) { printf("请选择操作,1:进栈 2:出栈 0:退出"); fflush(stdin); scanf("%d",&op); switch(op) { case 0:return ; case 1: { printf("请输入进栈元素:"); scanf("%d",&i); if(push(s,MAXN,&top,i)==0) { printf("进栈成功,栈内元素:\n"); OutputStack(s,top); } else printf("栈满\n"); } break; case 2: if(pop(s,&top,&i)==0) { printf("出栈元素为:[%d],栈内元素为:\n",i); OutputStack(s,top); } else printf("栈空\n"); break; } } }
补充:入栈时修改指针,然后插入数据,出栈时刚好相反
相关文章推荐
- 链表的基本操作(C语言版):建立,插入,删除,查找,输出
- 队列的基本操作(C语言版):进队,出队,输出
- 程序员面试宝典(第三版)——单链表的基本操作:建立,求长度,输出,排序,插入,删除,逆置(转)
- 实验C—1 顺序栈基本操作压栈与出栈
- 第15周项目3-指针的基本操作(new-delete)-输出最值
- <php+mysql>PHP脚本对数据库的基本操作,查找,删除,循环输出
- File类基本操作之OutputStream字节输出流
- Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】[原创]_python_脚本之家
- C语言实现顺序栈的基本操作(初始化、判断空、入栈、出栈、获取栈顶元素)
- 数据结构(C语言实现) - 二叉树的基本操作(建立,遍历,结点数,叶子结点数,高度,按树状打印,输出叶子结点等)
- 实现一个栈(元素遵守先入后出顺序),能够通过 min 方法在 O(1)时间内获取栈中的最小元素。同时,栈的基本操作:入栈(Push)、出栈(Pop),也是在O(1)时间内完成的
- String类的输入和输出及基本操作
- C_线性表----单链表的基本操作(构表、插入、删除、倒序、输出)
- 二叉树的基本操作(C语言版)
- 数据结构 - C语言版 - 串 所有基本操作
- DirectSound---输出设备基本操作(枚举、查询等)
- 栈的基本操作模板类,包括栈的压入,出栈,删除栈顶元素,清空栈等操作
- Java单链表基本操作(十)--判断单链表是否有环并输出环长度以及环的入口节点
- 栈的基本操作 出栈与入栈
- 单链表的基本操作:建立,求长度,输出,排序,插入,删除,逆置