编程菜鸟的日记-初学尝试编程-实现字符串的逆序

一:

//若源字符串为"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");
}

 

 

posted @ 2013-11-01 22:34  编程的爬行者  阅读(490)  评论(0编辑  收藏  举报