堆栈相关操作
来源:互联网 发布:mysql union all limit 编辑:程序博客网 时间:2024/06/05 16:14
在这个程序中,我将堆栈当作容器。进行压栈跟出栈的操作!
#include<stdio.h>
#define MaxSize 20 //允许栈的最大存储数为20
typedef int BOOL;
typedef struct stack{
int Top,MaxStack;
int N; //用来标志栈操作量的增减
int Element[MaxSize];
}Stack;
void Creat_Stack(Stack *p,int m)
{
p->Top=0;
p->N=0;
p->MaxStack=m;
}
BOOL Is_Empty(Stack *p)
{
return p->Top<1; //如栈中没有元素,既一个也没有小于1的情况下为空
}
BOOL Is_Full(Stack *p)
{
return p->Top>=MaxSize; //大于最大可存储数的情况下为满
}
void Push(Stack *p,int x)
{
if(Is_Full(p))
printf("Overflow/n");
else
{
p->Element[++(p->Top)]=x; //先将地址加1,在将值赋给堆栈
p->N=p->N+1; //压入一个数,N就加1
}
}
void Pop(Stack *p)
{
if(Is_Empty(p))
printf("underflow/n");
else
{
printf("%d/n",p->Element[p->Top]);
p->Top--; //出栈一个堆栈的top就减1
p->N=p->N-1; //同时N也减1
}
}
PrintStack(Stack *p)
{
if(Is_Empty(p))
{
printf("/nIs Bottom!/n");
}
else
{
printf("%d/n",p->Element[p->Top--]); //列印出堆栈的元素
PrintStack(p);
}
return p->Top;
}
void main()
{
Stack s;
int i,n;
int a[MaxSize];
Creat_Stack(&s,MaxSize); /*Construction of a capacity for MaxSize air for stack*/
for(;;)
{
switch(menu_select())
{
case 1:
printf("please put into number element:/n");
scanf("%d",&n);
for(i=0;i<n;i=i++)
{
scanf("%ld",a+i);
}
printf("************************/n");
for(i=0;i<n;i++)
{
Push(&s,a[i]);
}
printf("N=%d/n",s.N);
printf("/n");
break;
case 2:
printf("pop element:");
Pop(&s);
printf("N=%d/n",s.N);
break;
case 3:
printf("print stack element:/n/n");
PrintStack(&s);
s.Top=s.N; //将N的值赋给top
printf("N=%d/n",s.N);
break;
case 0:
printf("/Thank you for your using!/n");
return;
}
}
}
int menu_select()
{
int sn;
printf(" /n");
printf(" Stack operate /n");
printf(" ======================/n");
printf(" 1.Stack push/n");
printf(" 2.Stack Pop/n");
printf(" 3.information printf/n");
printf(" 0.exit Stack operate/n");
printf(" ======================/n");
printf( " please select 0-4 /n/n");
for(;;)
{
scanf("%d",&sn);
if(sn<0||sn>3)
printf("/tInsert Error/n");
else
break;
}
return sn;
}
- 堆栈相关操作
- 堆栈的相关操作
- 堆栈的相关操作_链式存储
- 堆栈和队列的数据结构和相关操作总结
- 堆栈操作
- 堆栈操作
- gdb调试--堆栈相关
- 第六讲 堆栈操作
- lua堆栈操作
- 堆栈的操作
- 堆栈操作指令
- arm堆栈操作
- ARM 堆栈操作
- arm cortex 堆栈操作
- 堆栈操作指令
- 堆栈操作指令
- arm堆栈操作
- 数据结构之堆栈操作
- IMEI 生成器
- 转: (论坛答疑点滴)winform下怎么得到按钮的click事件的处理方法
- 经典维修守则
- 地震当天晚上B(EarthQuake 5)
- 地震当天晚上C(EarthQuake 6)
- 堆栈相关操作
- 18条cpu的知识
- Take a break
- 英国研制出新型机器人具有10种人类表情(组图)
- ASP.NET2.0错误:Server Application Unavailable
- Oracle 的位图索引(作者:未知 来源:supcode.com收集整理 发布时间:2005-6-30 14:32:00)
- Links of Mac OS X support websites
- checkbox
- Hadoop 带DNS安装配置完整流程(持续完善中)