您的位置:首页 > 其它

两个栈实现队列功能

2014-01-05 21:04 337 查看
用的是最简单的方法,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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: