为什么后面的5个H没有输出呢
大家可以帮忙看一下吗
这是王道书里的,简单来说就是用栈把S放到前面,H放到后面
pop函数中,应该是是 x= s.data[s.xtop--];
修改后运行结果:
完整代码如下(修改部分有注释):
#include <iostream>
using namespace std;
#define Max 120
typedef struct {
char data[Max];
int top;
}stack;
bool push(stack& s, char x)
{
if (s.top == Max - 1)
return false;
s.data[++s.top] = x;
return true;
}
bool pop(stack& s, char& x)
{
if (s.top == -1)
return false;
//修改 这里应该是给x赋值
x = s.data[s.top];
s.top--;
return true;
}
bool stackempty(stack s)
{
if (s.top == -1)
return true;
else
return false;
}
void arrange(char a[])
{
stack s;
s.top = -1;
char* p = a, * q = a, c;
while (*p)
{
if (*p == 'H')
push(s, *p);
else
{
*q = *p;
cout << *q;
q++;
}
p++;
}
while (!stackempty(s))
{
pop(s,c);
//*q = c; //修改 这一句没必要,直接输出c就可以了
cout << c;
}
}
int main()
{
char a[] = "HSHSHHSSSH";
cout << a << endl;
arrange(a);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!