本文主要是介绍顺序栈的进栈、出栈算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<stdio.h>
#define m 100
typedef struct
{ int stack[m];int top;
}qstype;
void initials(int &top) //初始化一个堆栈
{top=-1;
}
int emptys(int top) //判断是否为空
{return top==-1; //判断top是否等于-1,top==-1 -> return 1 || top!=-1 -> return 0
}
int fulls(int top) //判断是否为满
{return top==m-1; //判断top是否等于m-1
}
int push(int stack[],int &top,int item)
{if(fulls(top)) //栈为满return 0;else {stack[++top]=item; //先修改top值,然后这个位置为空,再push值return 1;}}
int pop(int stack[],int &top,int &item) //item带&是因为要获取它,传回主调函数
{if(emptys(top)) //栈为空return 0;else{item=stack[top--];return 1;}
}void main()
{ int top,i,x,n; //pop表示栈的指针,x为要插入的数,item为pop出栈的数,n为数组大小int stac[100]; //定义一个数组 initials(top); //初始化一个堆栈printf("请输入n的值:\n");scanf("%d",&n);printf("请输入x的值:\n"); for(i=0;i<n;i++){scanf("%d",&x);push(stac,top,x);}for(i=0;i<n;i++){pop(stac,top,x); //pop出栈printf("%d \t",x); // 输出pop出栈的数item}
}
结果
这篇关于顺序栈的进栈、出栈算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!