用的是最简单的方法,c语言版本
#include <stdio.h>
#define LMAX 128
typedef struct {
unsigned char ary[LMAX];
unsigned char *top;
int size;
} _Stack;
_Stack sa, sb;
void sinit(void){
sa.top = sa.ary;
sb.top = sb.ary;
sa.size = 0;
sb.size = 0;
printf("sinit\n");
}
void push(_Stack *s, unsigned char k){
if (s->size < LMAX){
*s->top++ = k;
s->size++;
//printf("push %c\n", k);
}
else
printf("push error\n");
}
unsigned char pop(_Stack *s){
unsigned char temp;
if (s->size > 0){
temp = *--s->top;
s->size--;
//printf("pop %c\n", temp);
return temp;
}
else
printf("push error\n");
return 0;
}
void lin(unsigned char k){
push(&sa, k);
}
unsigned char lout(){
while(sa.size > 0){
push(&sb, pop(&sa));
}
unsigned char temp = pop(&sb);
while(sb.size > 0){
push(&sa, pop(&sb));
}
return temp;
}
int main(){
sinit();
unsigned char ary[] = {
'A','B','C','D','E','F','G','H','I','J','K','L','M','N'
};
int t = 0;
while(t < 14){
lin(ary[t]);
printf("lin = %c\n", ary[t]);
t++;
}
printf("lout = %c\n", lout());
return 0;
}