c字符串的設(shè)計與實現(xiàn)_第1頁
c字符串的設(shè)計與實現(xiàn)_第2頁
c字符串的設(shè)計與實現(xiàn)_第3頁
c字符串的設(shè)計與實現(xiàn)_第4頁
c字符串的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、算法與數(shù)據(jù)結(jié)構(gòu)實驗報告實驗題目:字符串的設(shè)計與實現(xiàn)任課教師: 賀懷清學(xué) 號:120341108 姓 名: 郭兵權(quán) 完成日期:2014.412、 需 求 和 規(guī) 格 說 明熟悉字符串類定義的優(yōu)心;掌握基本操作的實現(xiàn)算法;設(shè)計字符串類并給11!英基本操作和運算符重載的算法實現(xiàn)。設(shè)計2.1算法描述/string類頭文件# ifndefstring_h#define str1ng.h#include <assert.h>#include <string.h>class stringpublic:/private:char *str;字符串int size;字符串長度string

2、(char *s)構(gòu)造函數(shù)int len=0;while(*(s+len)!=o)len=len+l;size=len;/size=strlen(s);str=new charsize+1;字符串的空間加上結(jié)束符、(t assert(str!=,o'); 若 str='o',程序退出 strcpy(str,s);將 s 復(fù)制到 strstringosize=o;str=new char;stro=,o,;void clear()size=0;str=new char;stro='o,;/cout«h已釋放空間u«endl;-stringo析構(gòu)

3、函數(shù)clear();void copy(string b,string a)將 a 復(fù)制到 bfor(int i=o;i<a.size;i+)*b.str+=*a.str+;b.size=a.size;void isemptyo判空if(size=0)cout«h此字符串為空! “vvendl;elsecout«h此字符串不為空! “vvcndl;void com(string a,string b) /a與b比較,并返回較長的串if(a.size>b.size)a. show();elseb. show();int length()長度return size;

4、void show()顯示字符串cout«str«endl;string operator =(string &s)s.copy(*this,s);return *this;string operator +(string &b) 字符串拼接strcat(str,b.str);新的字符串與原來的拼接size二size+b.size;return *this;string insert(char* s,int pos)在第 pos 個位置插入字符串 sstring temp;新的字符串temp.size=strlen(s)+size;fbr(int i=0;i

5、<pos;i+)第一段temp.strfi=strfi;for(int j=0;j<pos+strlen(s);j+)/ 新增段temp.strpos+j=sj;for(int k=o;k<temp.size;k+)/最后一段temp.strpos+strlen(s)+k=strpos+k;return temp;string substr(int pos,int n)從第pos個位置抽収長度為n的子串int left=size-pos; /pos 之后剩下的長度string tmp;if(pos>=size)若pos大于本身字符串長return null;返回空串if

6、(n>left)若抽取的長度大于pos之后的長度n=left;最多只能抓取長度為left的字符delete jtmp.str;tmp.str二new charn+1;tmp.size二n;新的字符串長度為nint i=0;while(i<=tmp.size)tmp.stri=strpos+i;i+;tmp.strti+lj-vo*;return tmp;int find(char c,int start) 從第 start 位查找字符 c;int i=start;assert(i<size);while(stri!=o&&stri!=c)i+;if(stri=

7、o)return -1;elsereturn i;;#endif主函數(shù):#include<iostream>using namespace std;# include<string.h>#include "string.h"int main()cout«h請輸入字符串:“vvcndl;char *sl=new char;cin»sl;string stl(sl);cout«"你輸入的字符串為:u«endl;stl.show();cout«m請輸入號碼以實現(xiàn)對應(yīng)功能:”vvendl; cout

8、«hl .求字符串長度;m«endl;cout«h2 .判斷字符串是否為空;,«endl;cout«h3 .比較并返冋兩個字符串較長的串;n«endl;cout«n4 .抽取字串;n«endl;cout«"5 .查找字符;"«endl;cout«h6 .拼接字符串;n«endl;cout«h7 .字符串復(fù)制;m«endl;cout«n8 .插入字符串;h«endl;cout«n9 .釋放字符串的儲存空間.&

9、quot;«endl;cout«"u«endl;int n;cin»n;switch(n)case 1:cout«"你構(gòu)造的字符串長度為:"«stl .length()«endl; break;case 2:stl.isemptyo;break;case 3:cout«"請輸入另一個字符串:"vvendl;char *s3=new char;cin»s3;string st3(s3);(stl,st3);break;case 4:int pos;cout&

10、#171;h你想從第幾個字符后面開始抽取? h«endl;cin»pos;int n;cout«h你想抽取多少個字符? u«endl;cin»n;string st4=stl .substr(pos,n);cout«n抽取的字符串為:“;st4.show();break;case 5:char cl;cout«h你想查找哪個字符? “vvendl;cin»co;int start;cout«h你想從第兒個字符開始查找? h«endl;cin»start;cout«"

11、在開始查找后的第"«st l.find(c o,start)«endl; break;case 6:cout«h請輸入另一個字符串:“;char* s6=new char;cin»$6;string st6(s6);cout«h拼接后的字符串為:“;string s=stl+st6;s.show();break;case 7:cout«h將另一個字符串復(fù)制到本串:”;char * s7=new char;cin»s7;string st7(s7);st7.copy(stl,st7);cout«h第一次輸入

12、的字符串變?yōu)椋骸?;st7.show();break;case 8:cout«h輸入插入位置:”;int pos;cin»pos;cout«h輸入你想插入的字符串:“;char * s8=new char;cin»s8;string st8=stl .insert(s8,pos);cout«h新的字符串為:“vvendl;st8.show();break;case 9:stl.clear();stlshow();cout«h空間已釋放” vvendl;break;default:cout«h暫時還沒有開發(fā)這個功能! “vvendl; break;system(npausen);return 0;2.2實現(xiàn)注釋程序算法注釋直接見源代碼的注釋。設(shè)計了人性化的ui。三.用戶手冊1. 根據(jù)提示,輸入字符串;2. 按回車,根據(jù)ui操作;3. 成功顯示逆置后的鏈式隊列。四.調(diào)試報告這個程序是這個學(xué)期的第3個程序,程序的內(nèi)容不算是太難,整個過程都保持 一個比較清晰的思路,但是有個最大的,也是最容易忽略的問題,就是寫構(gòu)造 函數(shù),若是構(gòu)造不合理,就會出現(xiàn)各種內(nèi)存的空間報錯。好在后來合理構(gòu)造函 數(shù),問題也迎刃而解.目前程序運行無錯誤。五.運行結(jié)果請輸入字符串:輸入aksdjha

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論