求教一个栈的问题

#include"stdio.h"#include"stdlib.h"#defineMAXSIZE100typedefstruct{chardata[MAXSIZE];/... #include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 100
typedef struct{
char data[MAXSIZE]; //栈中最大容量
int top; //记录栈顶元素
}sqstack;
void pop_sqstack(sqstack *L)//删除栈顶元素
{
if(L->top<0)
printf("已达到栈底!\n");
else
{
--L->top;
}
}
void clearsqstack(sqstack *L) //清空栈
{
if(L->top<0)
printf("以达栈底!\n");
else
L->top=-1;
}
void push_sqstack(sqstack*L,char x) //入栈
{
if(L->top>=MAXSIZE)
printf("以达栈顶!\n");
else
{
++L->top;
L->data[L->top]=x;
}
}
void covsion(sqstack*L,char s[])
{
int i=0;
while(s[i])
{
switch(s[i])
{
case '#' : pop_sqstack(L); //输入的若为#则删除该字符
break;
case '@' : clearsqstack(L); //若输入的为@则清空栈
break;
default : push_sqstack(L,s[i]); //若为其他则存入栈
break;
}
i++;
}
}
void print(sqstack*L) //输出栈中操作完的数据
{
if(L->top>=0)
{
printf("%c",L->data[L->top]);
--L->top;
}
}
int main(void)
{
sqstack L;
char character[20];
L.top=-1;
printf("输入字符:\n");
gets(character); //输入字符
covsion(&L,character);
print(&L);
return 0;
}为什么输入完字符后,就只输出一个字符呢?我找不到错误啊,请高手帮帮忙
展开
 我来答
adoqq_bd
2012-05-28 · TA获得超过7051个赞
知道大有可为答主
回答量:1818
采纳率:63%
帮助的人:1709万
展开全部
void print(sqstack*L) //输出栈中操作完的数据
{
while(L->top>=0) //粗心了吧.这里是while不是if
{
printf("%c",L->data[L->top]);
--L->top;
}
}
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/O)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式