#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int top;
int s[MAXSIZE];
} Stack;
void Init_stack(Stack S)
{
S.top = -1;
}
int is_empty(Stack S)
{
if(S.top == -1)
return 1;
else
return 0;
}
int is_full(Stack S)
{
if(S.top == MAXSIZE - 1)
return 1;
else
return 0;
}
void PUSH(Stack S, int n)
{
if(!is_full(S))
{
S.top++;
S.elem[S.top] = n;
}
else printf("the stack is full!");
}
int POP(Stack S)
{
if(is_empty(S))
return -1;
else
return S.s[S.top];
S.top--;
}
void Transfer(Stack S1, Stack S2)
{
int p;
if(!is_empty(S1))
{
p=POP(S1);
PUSH(S2,p);
}
}
int main(void)
{
int p;
Stack s1,s2;
Init_stack(s1);
Init_stack(s2);
PUSH(s1,1);
PUSH(s1,2);
PUSH(s1,3);
Transfer(s1,s2);
p=POP(s2);
printf("%d ",p);
return 0;
}
用GDB调试的时候说PUSH()函数出现错误。