#include
using namespace std;
#define MaxSize 100
//顺序栈的初始分配空间大小
typedef int ElemType;
//假设顺序栈中所有元素为int类型
typedef struct
{
ElemType data[MaxSize];
//保存栈中元素
int top;
//栈顶指针
}SqStack;
//顺序栈类型
int Push(SqStack&st,ElemType x)//进栈元
{
if (st.top==MaxSize-1)
return 0;
else
{
st.top++;
st.data[st.top]=x;
return 1;
}
}
int StackEmpty(SqStack st)
//判断栈是否为空
{
if(st.top==-1)
return 1;
else return 0;
}
int Pop(SqStack &st,SqStack&tmpst,ElemType &x) ///st,15
//出栈元素x
{
if(st.top==-1)
//栈空
return 0;
else if(st.data[st.top]==15) //等于15的时候出栈
{
x=st.data[st.top];
st.top--;
return 1;
}
else //不是值为15的 出栈并且存到临时栈tmpst中
{
tmpst.data[tmpst.top]=st.data[st.top];
st.top--;
tmpst.top++;
return 1;
}
int lop(SqStack &st,ElemType &x){
if(tmpst.top==-1)
return 0;//栈空
else
x=st.data[st.top]
st.top--;
rerturn 1;
}
void expand_action()
{
printf("初始化栈st\n");
SqStack st,tmpst;
ElemType e,t;
InitStack(st);
InitStack(tmpst);
printf("栈%s\n",(StackEmpty(st)==1?"空":"不空"));
Push(st,10);
Push(st,15);
Push(st,20);
Push(st,15);
Push(st,15);
Push(st,60);
printf("元素10 15 20 15 15 60依次进栈st\n");
printf("退栈所有值为15的元素\n");
int t=15;//
Pop(st,t);//t=15
printf("栈%s\n",(StackEmpty(st)==1?"空":"不空"));
printf("出栈序列为");
while(!StackEmpty(st))
{
Pop(st,e);
printf("%c",e);
}
}
int main()
{
//
expand_action;
return 0;
}
不太明白怎么写 有没有老哥看看怎么弄