知识大全 数据结构考研分类复习真题 第四章 答案[21]

Posted 字符

篇首语:世事洞明皆学问,人情练达即文章。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第四章 答案[21]相关的知识,希望对你有一定的参考价值。

   [题目分析]实现字符串的逆置并不难 但本题 要求不另设串存储空间 来实现字符串逆序存储 即第一个输入的字符最后存储 最后输入的字符先存储 使用递归可容易做到

  void InvertStore(char A[])//字符串逆序存储的递归算法    char ch;  static int i = ;//需要使用静态变量  scanf ( %c &ch);  if (ch!= ) //规定 是字符串输入结束标志  InvertStore(A);  A[i++] = ch;//字符串逆序存储    A[i] = \\ ; //字符串结尾标记  //结束算法InvertStore

   串s 可以看作由以下两部分组成 caabcbca a 和 ca a 设这两部分分别叫串s 和串s 要设法从s s 和s 中得到这两部分 然后使用联接操作联接s 和s 得到s

  i=index(s s );  //利用串s 求串s 在串s中的起始位置  s =substr(s i length(s) i + ); //取出串s   j=index(s s ); //求串s 在串s中的起始位置 s串中 bcb 后是 ca a )  s =substr(s j+ length(s) j ); //形成串s   s =concat(s s );

   [题目分析]对读入的字符串的第奇数个字符 直接放在数组前面 对第偶数个字符 先入栈 到读字符串结束 再将栈中字符出栈 送入数组中 限于篇幅 这里编写算法 未编程序

  void RearrangeString()//对字符串改造 将第偶数个字符放在串的后半部分 第奇数个字符前半部分   char ch s[] stk[];  //s和stk是字符数组(表示字符串)和字符栈  int i= j; //i和j字符串和字符栈指针  while((ch=getchar())!= # )// # 是字符串结束标志  s[i++]=ch;  //读入字符串  s[i]= \\ ;  //字符数组中字符串结束标志  i= ;j= ;  while(s[i]) //改造字符串  if(i% == ) stk[i/ ]=s[i]; else s[j++]=s[i];  i++;  //while  i ; i=i/ ; //i先从 \\ 后退 是第偶数字符的个数  while(i> ) s[j++]=stk[i ]   //将第偶数个字符逆序填入原字符数组  

cha138/Article/program/sjjg/201311/22604

相关参考