/*将栈S1中的元素复制到栈S2中一个非数组变量*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define OK 1
#define ERROR 0
#define MAXSIZE 20
typedef int ElemType;
typedef int Status;
typedef struct
{
ElemType data[MAXSIZE];
int top;
}Sqstack;
//顺序栈的初始化
Status InitSqstack(Sqstack * S)
{
S->top=-1;
return OK;
}
//顺序栈的建立
Status Create(Sqstack * S,int n)
{
srand(time(0));
for(int i=0;i<n;i++)
{
S->data[++S->top]=rand()%100+1;
}
return OK;
}
//顺序栈的出栈
Status Pop(Sqstack * S,ElemType * e)
{
*e=S->data[S->top--];
return OK;
}
//顺序栈的入栈
Status Push(Sqstack * S,ElemType e)
{
S->data[++S->top]=e;
return OK;
}
//顺序栈输出
void Print(Sqstack * S)
{
printf("输出元素:\n");
for(int i=S->top;i>=0;i--)
{
printf("%d ",S->data[i]);
}
printf("\n");
}
//将栈S1中的元素复制到栈S2中
Status Copy(Sqstack * S1,Sqstack * S2,int n)
{
ElemType DeElem,temp;
for(int k=0;k<n-1;k++)
{
temp=S1->data[S1->top--];
for(int i=n-k-2;i>=0;i--)
{
Pop(S1,&DeElem);
Push(S2,DeElem);
}
Push(S1,temp);
for(int j=n-k-2;j>=0;j--)
{
Pop(S2,&DeElem);
Push(S1,DeElem);
}
}
for(int x=0;x<n;x++)
{
Pop(S1,&DeElem);
Push(S2,DeElem);
}
return OK;
}
int main()
{
int ElemNumber;
Sqstack S1,S2;
InitSqstack(&S2);
InitSqstack(&S1);
printf("请输入元素个数:\n");
scanf("%d",&ElemNumber);
Create(&S1,ElemNumber);
Print(&S1);
Copy(&S1,&S2,ElemNumber);
printf("复制后后:\n");
Print(&S2);
return OK;
}
将栈S1中的元素复制到栈S2中一个非数组变量
最新推荐文章于 2022-07-01 08:13:47 发布