/*将栈S1中的元素复制到栈s2中,并保持顺序不变,使用额外的一个栈*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define OK 1
#define ERROR 0
#define MAXSIZE 20
typedef int SElemType;
typedef int Status;
typedef struct
{
SElemType data[MAXSIZE];
int top;
}Sqstack;
//顺序栈的初始化
Status InitSqstack(Sqstack * S)
{
S->top=-;
return OK;
}
//顺序栈的建立
Status Create(Sqstack * S,int n)
{
srand(time());
for(int i=;i<n;i++)
{
S->data[++S->top]=rand()%+;
}
return OK;
}
//顺序栈的出栈
Status Pop(Sqstack * S,SElemType * e)
{
*e=S->data[S->top--];
return OK;
}
//顺序栈的入栈
Status Push(Sqstack * S,SElemType e)
{
S->data[++S->top]=e;
return OK;
}
//循序栈的输出
void Print(Sqstack * S)
{
printf("输出元素:\n");
for(int i=S->top;i>=;i--)
{
printf("%d ",S->data[i]);
}
printf("\n");
}
//把栈S1元素复制到栈S2中
Status Copy(Sqstack * S1,Sqstack * S2,Sqstack * S)
{
SElemType DeElem;
for(int i=S1->top;i>=;i--)
{
Pop(S1,&DeElem);
Push(S,DeElem);
}
for(int j=S->top;j>=;j--)
{
Pop(S,&DeElem);
Push(S2,DeElem);
}
return OK;
}
int main()
{
Sqstack S,S1,S2;
int ElemNumber;
InitSqstack(&S1);
InitSqstack(&S2);
InitSqstack(&S);
printf("请输入元素个数:\n");
scanf("%d",&ElemNumber);
Create(&S1,ElemNumber);
Print(&S1);
Copy(&S1,&S2,&S);
printf("复制后:\n");
Print(&S2);
return OK;
}
将栈S1中的元素复制到栈s2中,并保持顺序不变,使用额外的一个栈