熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 數據結構 >> 正文

數據結構考研分類復習真題 第四章 答案[16]

2022-06-13   來源: 數據結構 

  [題目分析]本題是字符串的插入問題要求在字符串s的pos位置插入字符串t首先應查找字符串s的pos位置將第pos個字符到字符串s尾的子串向後移動字符串t的長度然後將字符串t復制到字符串s的第pos位置後

  對插入位置pos要驗證其合法性小於或大於串s的長度均為非法因題目假設給字符串s的空間足夠大故對插入不必判溢出

  void  insert(char *schar *tint pos)//將字符串t插入字符串s的第pos個位置
  {int i=x=;  char *p=s*q=t; //pq分別為字符串s和t的工作指針
  if(pos<) {printf(pos參數位置非法\n);exit();}
  while(*p!=\&&i<pos) {p++;i++;} //查pos位置若pos小於串s長度則查到pos位置時i=pos
  if(*p == /) {printf(%d位置大於字符串s的長度pos);exit();}
  else //查找字符串的尾
  while(*p!= /) {p++; i++;}//查到尾時i為字符\的下標p也指向\
  while(*q!= \) {q++; x++; } //查找字符串t的長度x循環結束時q指向\
  for(j=i;j>=pos ;j){*(p+x)=*p; p;}//串s的pos後的子串右移空出串t的位置
  q;  //指針q回退到串t的最後一個字符
  for(j=;j<=x;j++) *p=*q; //將t串插入到s的pos位置上

  [算法討論] 串s的結束標記(\)也後移了而串t的結尾標記不應插入到s中

[]  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/sjjg/201311/22615.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.