栈的基本算法的实现(通过结构体):
#include<stdio.h>
#include<stdlib.h>
#define N 50
struct mystack
{
int top; //栈顶
int data[N];//栈里数据
};
struct mystack selfstack={-1,{0}};
int isempty();//判断是否为空,1为空,0位非空
void setempty();//设置栈为空
int push(int num);//将数据压入栈
int pop();//将数据推出栈
int isempty()
{
if(selfstack.top==-1) //如果栈为空返回1
return 1;
else
return 0;
}
void setempty() //将栈顶设置成1即为空栈
{
selfstack.top=-1;
}
int push(int num)
{
if(selfstack.top==N-1) //如果栈顶为N-1了即为满栈,不能压入数据
return 0;
else
{
selfstack.top+=1;//栈顶移位
selfstack.data[selfstack.top]=num;//数据压入栈
return 1;
}
}
int pop()
{
if(selfstack.top==-1) //如果为空栈,无数据推出
return -1;
else
{
selfstack.top-=1;//栈顶移位
return selfstack.data[selfstack.top+1];//将数据推出
}
}
void main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
for(int i=0;i<10;i++)
push(a[i]);//将数据压入栈
while(!isempty())
printf("%d\n",pop());//将栈内数据依次推出
system("pause");
}