c 用两个栈模仿队列操作

来源:百度知道 编辑:UC知道 时间:2024/05/29 14:33:40
#include <stdio.h>

void enstack(char a[],int b,char p)
{
b++;
a[b]=p;

}

char outstack(char a[],int b)
{
char x;
x=a[b];
b--;
return(x);
}

char outqueue(char a1[],char a2[],int b1,int b2)
{
char outstack(char a[],int b);
void enstack(char a[],int b,char p);
char x;
if(b2==0)
{
while(b1!=0)
enstack(a2,b2,outstack(a1,b1));

}
x=outstack(a2,b2);
return(x);

}

void main()
{
char a[101],b[101];
int top1=0,top2=0,p;
char c;

h: printf("1.输入 2.输出\n");
scanf("%d",&p);
scanf("%c",&c);
if(p==1)
{
printf("输入元素\n");

scanf("%c",&c);
while(c!='\n')
{
enstack(a,top1,c);
scanf("%c",&c);
}

}
else

已经写的不错了。

#include <stdio.h>

/* 传入top时要传指针 */
void enstack(char a[],int *b,char p)
{
(*b)++;
a[*b]=p;
}

char outstack(char a[],int *b)
{
char x;
x=a[*b];
(*b)--;
return(x);
}

char outqueue(char a1[],char a2[],int *b1,int *b2)
{
char x;
if(*b2==0)
{
while(*b1!=0)
enstack(a2,b2,outstack(a1,b1));
}
x=outstack(a2,b2);
return(x);
}

void main()
{
char a[101],b[101];
int top1=0,top2=0,p;
char c;

h:
printf("1.输入 2.输出\n");
scanf("%d",&p);
scanf("%c",&c);
if(p==1)
{
printf("输入元素\n");

scanf("%c",&c);
while(c!='\n')
{
enstack(a,&top1,c);
scanf("%c",&c);
}
}
else if(p==2)
{