编程菜鸟的日记-初学尝试编程-实现字符串的逆序
2013-11-01 22:34
483 查看
一:
//若源字符串为"abc”,得到其逆序字符串"cba”,
//在允许开辟新的动态空间则可以逆序拷贝进新的空间,即可实现逆序输出原始字符串
#include <iostream>
using namespace std;
char *strInverse(char *str)
{
char *p=new char[sizeof(char)*(strlen(str)+1)];//开辟一个新的存储空间,保存逆序字符串
char *New=p; //用于返回新的逆序字符串的首地址
char *end=str;
end+=(strlen(str)-1)*sizeof(char);//指向字符串str的最后一个字符不包含'\0'
while(end>=str)
{
*p++=*end--;
}
*p='\0';//添加结束标识符
return New;
}
void main()
{
char *str="abdkced";
cout<<"输入字符串:"<<str<<endl;
char *New;
New=strInverse(str);
cout<<"逆序字符串:"<<New<<endl;
system("pause");
}
二:在原始字符串序列基础上进行逆序,不允许利用新的存储空间
//若源字符串为"abc”,得到其逆序字符串"cba”,原地逆序
char *InplaceInverse(char *str)
//初始化两个指针,一个指向字符串首,另一个指向字符串尾
{
char *p=str;
char *q=str;
char temp;
q=q+(strlen(str)-1)*sizeof(char);
while(p!=NULL && q!=NULL && p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
return str;
}
void main()
{
char str[]="abdkced";//需要区别初始化char *str=”abdkced“,这样是str是指向字符串的指针常量不可以被修改
cout<<"输入字符串:"<<str<<endl;
char *New;
New=InplaceInverse(str);
//New=strInverse(str);
cout<<"逆序字符串:"<<New<<endl;
system("pause");
}
//若源字符串为"abc”,得到其逆序字符串"cba”,
//在允许开辟新的动态空间则可以逆序拷贝进新的空间,即可实现逆序输出原始字符串
#include <iostream>
using namespace std;
char *strInverse(char *str)
{
char *p=new char[sizeof(char)*(strlen(str)+1)];//开辟一个新的存储空间,保存逆序字符串
char *New=p; //用于返回新的逆序字符串的首地址
char *end=str;
end+=(strlen(str)-1)*sizeof(char);//指向字符串str的最后一个字符不包含'\0'
while(end>=str)
{
*p++=*end--;
}
*p='\0';//添加结束标识符
return New;
}
void main()
{
char *str="abdkced";
cout<<"输入字符串:"<<str<<endl;
char *New;
New=strInverse(str);
cout<<"逆序字符串:"<<New<<endl;
system("pause");
}
二:在原始字符串序列基础上进行逆序,不允许利用新的存储空间
//若源字符串为"abc”,得到其逆序字符串"cba”,原地逆序
char *InplaceInverse(char *str)
//初始化两个指针,一个指向字符串首,另一个指向字符串尾
{
char *p=str;
char *q=str;
char temp;
q=q+(strlen(str)-1)*sizeof(char);
while(p!=NULL && q!=NULL && p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
return str;
}
void main()
{
char str[]="abdkced";//需要区别初始化char *str=”abdkced“,这样是str是指向字符串的指针常量不可以被修改
cout<<"输入字符串:"<<str<<endl;
char *New;
New=InplaceInverse(str);
//New=strInverse(str);
cout<<"逆序字符串:"<<New<<endl;
system("pause");
}
相关文章推荐
- 有个数组a[100]存放了100个数,这100个数取自1-99,且只有两个相同的数,剩下的98个数不同,写一个搜索算法找出相同的那个数的值.(注意空间效率时间效率尽可能要低)
- 关于java内存溢出的另一种处理方案
- JVM上“表达式问题”的解决方案-《Java 下一代: 没有继承性的扩展》笔记
- 数组与内存控制
- java中的IO详解
- C++多态的实现原理
- yii学习记录-gii配置
- C语言之指针
- hdu 2024 C语言合法标识符
- CV 相关库及代码
- C++Builder Reviewer's Guide
- python访问mysql
- C#定时执行一个操作
- java编程规范
- C#定时执行一个操作
- python访问mysql
- 从 Java 代码到 Java 堆
- 新浪笔试(c语言开发)
- C# WinForm 只运行一次的MDI子窗体
- VC编程 设置IE浏览器代理(不需重启浏览器)