栈的问题,可以连续压入字符串再一起弹出吗?
程序代码:
#include"stdlib.h" #include"iostream.h" #include"conio.h" typedef char elemtype; //类型 #define stacksize 100 //顺序栈原始分配空间 typedef struct { elemtype data[stacksize]; //保存栈中元素 int top; //栈指针 }sqstack; void initstack(sqstack*st) //st为应用型参数 { st->top=-1; //表示栈中为空 } int push(sqstack*st,elemtype x) { if(st->top==stacksize-1) //是否栈满 return 0; else { st->top++; //修改栈顶指针 st->data[st->top]=x; //指针指向存储单元 return 1; } } int pop(sqstack*st,elemtype*x) { if(st->top==-1) return 0; else { *x=st->data[st->top]; //取栈顶元素 st->top=st->top-1; //修改指针 return 1; } } int gettop(sqstack*st,elemtype*x) { if(st->top==-1) return 0; else { *x=st->data[st->top]; return 1; } } int stackempty(sqstack*st) { if(st->top==-1) return 1; else return 0; } void main() { int i,n; sqstack st; elemtype m,a[100]; initstack(&st); cout<<"请输入元素个数"<<endl; cin>>n; cout<<"请输入元素"<<endl; cin>>m; push(&st,m); pop(&st,&a[0]); for(i=1;i<=n-1;i++) { cin>>m; push(&st,m); } cout<<"出栈次序:"; for(i=0;i<=n-1;i++) { pop(&st,&a[i+1]); cout<<a[i]; } cout<<endl; }
栈可以连续压入字符串再一起弹出吗?
比如说 我输入要输入元素3个,压入 ab bc cd,可以把ab或bc或者cd压入同一个再一起输出吗?
上面的代码输入ab bc cd 的话弹出的是abb。。怎么输出ab cd bc呢?