逆序

#include <iostream>
#include<stack>
using namespace std;


class Reverse
{
public:
//字符串完全逆序
void array_all_reverse(string &array);
void array_all_reverse(char* array);


//字符串中单词逆序
void array_reverse(string &array);
void array_reverse(char* array);
};




void Reverse::array_all_reverse(string &array)
{
stack<char> input_array;
int i = 0;
for(;i < array.size();i++)
{
input_array.push(array[i]); //将数组中的字符全部入栈
}

i = 0;
while(!input_array.empty())
{
array[i++] = input_array.top();
input_array.pop();
}
}




void Reverse::array_all_reverse(char* array)
{
stack<char> input_array;
int i = 0;


//cout << strlen(array) << endl;


//cout << sizeof(array) << endl;


for(;i < strlen(array);i++)
{
input_array.push(array[i]); //将数组中的字符全部入栈
}

i = 0;
while(!input_array.empty())
{
array[i++] = input_array.top();
input_array.pop();
}
}




void Reverse::array_reverse(string &array)
{
stack<char> transition;
stack<char> end;
cout << array.size() << endl;
for(int i=0 ; i<array.size();i++)
{
transition.push(array[i]);
// cout << "array[" << i << "]=" << array[i] << endl;
cout << "array[" << i << "]=" <<transition.top() << endl;
if(array[i] == 32 || array[i] == '\0')
{
while(!transition.empty())
{
// cout << "aaaaa" << endl;
end.push(transition.top());
transition.pop();
cout  << end.top() << endl;
}
}
}



i = 0;
while(!end.empty())
{

array[i] = end.top();
cout << "array[" << i << "]=" << array[i] << endl;
i++;
end.pop();
}
}


void Reverse::array_reverse(char* array)
{
stack<char> transition;
stack<char> end;


for(int i=0 ; i < strlen(array) ; i++)
{
transition.push(array[i]);
if(array[i] == 32)
{
while(!transition.empty())
{
end.push(transition.top());
transition.pop();
}
}
}

i = 0;
while(!end.empty())
{
array[i++] = end.top();
end.pop();
}


}



#include <iostream>
#include <string>
#include "Reverse.h"
using namespace std;




int main()
{
Reverse array_re;


string buf("My name is zhangli ! ") ;


cout << "逆序前字符串为:" << buf << endl;


array_re.array_all_reverse(buf);


cout << "逆序后字符串为:" << buf << endl;

array_re.array_all_reverse(buf);


cout << "还原后字符串为:" << buf << endl;


array_re.array_reverse(buf);

cout << "逆序2后字符串为:" << buf << endl;


char buf2[] = "My name is zhangli ! ";

cout << "逆序前字符串为:" << buf2 << endl;


array_re.array_all_reverse(buf2);


cout << "逆序后字符串为:" << buf2 << endl;

array_re.array_all_reverse(buf2);


cout << "还原后字符串为:" << buf2 << endl;

array_re.array_reverse(buf2);

cout << "逆序2后字符串为:" << buf2 << endl;


return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crystal_lpx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值