用两个栈相互入栈出栈。达到输出字符的目的,代码如下:
#include <iostream.h>
#include <stdio.h>
#include <malloc.h>
//用两个栈处理字符串,通过出栈入栈输出字符串
typedef struct Stack
{
char a[256];
int top;
int base;
int size;
}*sqstack;
sqstack InitialStack()
{
sqstack s=(sqstack)malloc(sizeof(Stack));
s->base=0;
s->top=0;
s->size=0;
return s;
}
int push(sqstack s,char a)
{
if(s->size>=256)
{
cout<<"The Stack Is Full!"<<endl;
return 0;
}
s->a[s->top]=a;
(s->top)++;
(s->size)++;
return 1;
}
char Pop(sqstack s)
{
if(s->size==0)
{
cout<<"The Stack Is Empty!"<<endl;
return 0;
}
char a;
a=s->a[(s->top)-1];
(s->top)--;
(s->size)--;
return a;
}
int stackEmpty(sqstack s)
{
if(s->size==0)
return 1;
else
return 0;
}
int main()
{
cout<<"Please Enter The Sentence:"<<endl;
char s[256];
gets(s);
int i=0;
char a;
char b;
sqstack stack1,stack2;
stack1=InitialStack();
stack2=InitialStack();
while(s[i]!=0)
{
push(stack1,s[i]);
i++;
}
while(!stackEmpty(stack1))
{
do
{
a=Pop(stack1);
if(a!=' ')
push(stack2,a);
}while(a!=' '&&!stackEmpty(stack1));
while(!stackEmpty(stack2))
{
b=Pop(stack2);
cout<<b;
}
if(!stackEmpty(stack1))
cout<<" ";
}
cout<<endl;
}