/*将棧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中,并保持順序不變,使用額外的一個棧