S1和S2栈表合并到S3中去
作者:互联网
#include<iostream>
#include<malloc.h>
#define STACKINITSIZE 100
#define STACKINCREMEMT 10
using namespace std;
typedef struct{
int *base;//动态存储空间的基地址,栈底
int *top;//栈顶指针,指向真实栈元素的下一个位置
int stacksize;
}Sqstack;
void InitStack(Sqstack &S){
S.base = (int *)malloc(STACKINITSIZE * sizeof(int));
S.top = S.base;
S.stacksize = STACKINITSIZE;
}
int StackNull(Sqstack &S){
if(S.base == S.top){
return 1;
}else{
return 2;
}
}
int StackFull(Sqstack &S){
if(S.top - S.base == S.stacksize){
return 1;
}else{
return 2;
}
}
void push(Sqstack &S,int e){//入栈
if(S.top-S.base >= S.stacksize){
S.base = (int *)realloc(S.base,(S.stacksize +STACKINCREMEMT) * sizeof(int));
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMEMT;
}
*S.top = e;
S.top++;
}
int pop(Sqstack &S){//出栈
int e;
S.top--;
e = *S.top;
return e;
}
void add(Sqstack S1,Sqstack S2,Sqstack S3){
while(StackNull(S1) == 2){
push(S3,pop(S1));
}
while(StackNull(S2) == 2){
push(S3,pop(S2));
}
while(StackNull(S3) == 2){
cout<<pop(S3)<<' ';
}
}
int main()
{
Sqstack S1;
Sqstack S2;
Sqstack S3;
int e1,e2,n;
n=3;
InitStack(S1);
InitStack(S2);
InitStack(S3);
cout<<"请输入S1栈表的值:";
while(n--){
cin>>e1;
push(S1,e1);
}
n=3;
cout<<"请输入S2栈表的值:";
while(n--){
cin>>e2;
push(S2,e2);
}
add(S1,S2,S3);
}
标签:Sqstack,S3,S2,S1,int,base,top 来源: https://blog.csdn.net/weixin_45331738/article/details/121459382