網(wǎng)絡(luò)工程專業(yè)畢業(yè)論文—數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告串基本操作的演示數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(偽碼)01036_第1頁
網(wǎng)絡(luò)工程專業(yè)畢業(yè)論文—數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告串基本操作的演示數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(偽碼)01036_第2頁
網(wǎng)絡(luò)工程專業(yè)畢業(yè)論文—數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告串基本操作的演示數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(偽碼)01036_第3頁
網(wǎng)絡(luò)工程專業(yè)畢業(yè)論文—數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告串基本操作的演示數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(偽碼)01036_第4頁
網(wǎng)絡(luò)工程專業(yè)畢業(yè)論文—數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告串基本操作的演示數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告(偽碼)01036_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 題目:串基本操作的演示 學(xué) 院 計(jì)算機(jī)學(xué)院 專 業(yè) 網(wǎng)絡(luò)工程 年級(jí)班別 11級(jí)1班 學(xué) 號(hào) 3111006293 學(xué)生姓名 指導(dǎo)教師 成 績(jī) _2012年6月題目:串基本操作的演示一 需求分析1. 定義自定義的串類型,并使用此類型實(shí)現(xiàn)串的基本操作演示。2. 利用堆分配存儲(chǔ)表示實(shí)現(xiàn)HString串類型的最小操作子集的基礎(chǔ),實(shí)現(xiàn)串抽象數(shù)據(jù)類型的其余基本操作。3. 嚴(yán)格檢查參數(shù)的合法性4. 構(gòu)造命令解釋程序,循環(huán)往復(fù)處理用戶輸入的每一條命令,有程序終止命令5. 需要實(shí)現(xiàn)的基本操作:(1)賦值 (2)判相等 (3)聯(lián)接 (4)求長(zhǎng)度 (5)求子串(6)子串定位 (7)串替換 (8

2、)顯示 (9)刪除 (10)退出 測(cè)試數(shù)據(jù):必要數(shù)據(jù)(1)E “ ”<回車>,應(yīng)顯示”EQUAL”. (2)E abcabcd<回車>,應(yīng)顯示UNEQUAL. (3)C “ “<回車>,應(yīng)顯示”. (4) I a”<回車>,應(yīng)報(bào)告:參數(shù)非法. (5)R aaaaab<回車>,應(yīng)顯示ba. (6)R aaabc aaab<回車>,應(yīng)顯示aabaabaabbc. (7)R aaaaaaaaaaaaab<回車>,應(yīng)顯示abab. 自定義數(shù)據(jù): (8)Astring<回車>,應(yīng)顯示:“語法格式錯(cuò)誤!請(qǐng)重新輸

3、入!” (9)A string<回車>,應(yīng)顯示:內(nèi)部名string. (10)A <回車>,應(yīng)顯示:內(nèi)部名 . (10)Lstring<回車>,應(yīng)顯示:”命令語法格式錯(cuò)誤!請(qǐng)重新輸入!” (11)L string<回車>,應(yīng)顯示: 6. (12)L <回車>,應(yīng)顯示: 0. (13)D123<回車>,應(yīng)顯示:“命令語法錯(cuò)誤!內(nèi)部名不能小于0和大于100和只能為數(shù)字!” (14)Ds<回車>,應(yīng)顯示:“內(nèi)部名只能輸入數(shù)字!請(qǐng)重新輸入!” (15)D99<回車>,應(yīng)顯示:“此內(nèi)部名為空!請(qǐng)重新輸入!”

4、(16)D2<回車>,應(yīng)顯示:“命令語法格式錯(cuò)誤!請(qǐng)重新輸入!” (17)D 2<回車>,應(yīng)顯示:刪除成功. (18)Sstring<回車>,應(yīng)顯示:“命令語法格式錯(cuò)誤!請(qǐng)重新輸入!” (19)S string2 3<回車>,應(yīng)顯示:tr. (20)S string5 7<回車>應(yīng)顯示:start不能小于0或大于字符串的長(zhǎng)度。end不能小于start且不能大于字符串的長(zhǎng)度。 (21)Cstring<回車>,應(yīng)顯示:“命令語法格式錯(cuò)誤!請(qǐng)重新輸入!” (22)C string<回車>,應(yīng)顯示:string. (2

5、3)C str<回車>應(yīng)顯示:str。 (24)Istring<回車>,應(yīng)顯示:“命令語法格式錯(cuò)誤!請(qǐng)重新輸入!” (25)I stringing<回車>,應(yīng)顯示: 4.二 概要設(shè)計(jì)1. 定義HString串抽象數(shù)據(jù)類型ADT StrHeadList 數(shù)據(jù)對(duì)象: D ai | aiElemSet, i=1,2,.,n, n0 數(shù)據(jù)關(guān)系:R1 <ai-1, ai>|ai-1, aiD, i=2,.,n 基本操作:void GetCommand(char c,StrHeadList &headlist,ResultType &resu

6、ltype)初始條件:c不為空,headlist存在,resultype存在操作結(jié)果: 得到命令的對(duì)應(yīng)整數(shù)值。void Assignment(StrHeadList headlist,ResultType resultype,int &pointcheck)初始條件:headlist存在,resultype存在。操作結(jié)果:存儲(chǔ)輸入的字符串,并顯示其內(nèi)部名和串值。void Equal(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始條件 : headlist存在,resultype存在。 操作結(jié)果:報(bào)告輸入

7、的兩字符串是否相等。void Connect(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始條件 : headlist存在,resultype存在。 操作結(jié)果 :聯(lián)接輸入的兩字符串,并顯示聯(lián)接后的字符串。void Length(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始條件 : headlist存在,resultype存在。 操作結(jié)果:顯示輸入的字符串的長(zhǎng)度。void Substring(StrHeadList headli

8、st,ResultType resultype,int start,int end) 初始條件 : headlist存在,resultype存在。 操作結(jié)果:顯示主串中長(zhǎng)度為end-start的子串。void SbsLocation(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始條件 : headlist存在,resultype存在。 操作結(jié)果:顯示子串在主串第一次出現(xiàn)的位置。void Replace(StrHeadList headlist,ResultType resultype,int &poin

9、tcheck) 初始條件 : headlist存在,resultype存在。 操作結(jié)果:用第二子串替換主串中出現(xiàn)的第一子串,并顯示替換后的主串 void Show(StrHeadList headlist,ResultType resultype,int &pointcheck,int k) 初始條件 : headlist存在,resultype存在。 操作結(jié)果:顯示表內(nèi)所有的字符串的內(nèi)部名和串值。void Delete(StrHeadList headlist,ResultType resultype,int &pointcheck) 初始條件 : headlist存在,re

10、sultype存在。 操作結(jié)果:刪除指定內(nèi)部名的字符串。void End(StrHeadList headlist,ResultType resultype,int &pointcheck,int k) 初始條件 : headlist存在,resultype存在 操作結(jié)果:結(jié)束程序。2. 命令分析抽象數(shù)據(jù)類型ADT ResultType數(shù)據(jù)對(duì)象: D ai | aiElemSet, i=1,2,.,n, n0 數(shù)據(jù)關(guān)系:R1 <ai-1, ai>|ai-1, aiD, i=2,.,n 變量:int CmdNo 操作結(jié)果:存儲(chǔ)命令對(duì)應(yīng)的整數(shù)值。 int s3操作結(jié)果:存儲(chǔ)輸入

11、的子串的內(nèi)部名。 3基本類型抽象數(shù)據(jù)類型ADT HString 數(shù)據(jù)對(duì)象: D ai | aiElemSet, i=1,2,.,n, n0 數(shù)據(jù)關(guān)系:R1 <ai-1, ai>|ai-1, aiD, i=2,.,n 變量:char *ch操作結(jié)果:字符串基址。 int length 操作結(jié)果 :存儲(chǔ)字符串的長(zhǎng)度.4.主程序void main() 初始化; 命令格式和使用格式說明列表; 命令分析函數(shù)調(diào)用 ab(headlist,resultype); 5.本程序模塊的調(diào)用關(guān)系本程序只有兩個(gè)模塊 主程序模塊 包涵各函數(shù)的模塊三 詳細(xì)設(shè)計(jì)1. 主程序需要的全程量#define SIZE

12、30 /字符串的分配空間#define true 1 /常量typedef struct /串表頭定義HString StrHead100; /字符串指針數(shù)組StrHeadList; /串表頭類型2.字符串類型typedef struct /字符串類型定義char *ch; /字符串存儲(chǔ)基址int length; /字符串的長(zhǎng)度HString; typedef struct/命令存儲(chǔ)類型定義int CmdNo; /存儲(chǔ)命令的變量int s3; /存儲(chǔ)輸入的字符串的下標(biāo)的數(shù)組ResultType;void GetCommand(char c,StrHeadList &headlist,R

13、esultType &resultype)/判斷由c存儲(chǔ)的字符,把與之對(duì)應(yīng)的命令的值賦予resultype的CmdNo中void Assignment(StrHeadList headlist,ResultType resultype,int &pointcheck)/從headlist中StrHead100查找還沒開辟空間的串頭指針,然后開辟空間存儲(chǔ)/用戶輸入的字符串。void Equal(StrHeadList headlist,ResultType resultype,int &pointcheck)/在headlist中存儲(chǔ)用戶輸入的兩個(gè)字符串,再進(jìn)行比較,如果

14、相等顯示EQUAL,/如果不相等顯示UNEQUAL。void Connect(StrHeadList headlist,ResultType resultype,int &pointcheck)/存儲(chǔ)用戶輸入的兩個(gè)字符串,然后將第二個(gè)字符串聯(lián)接到第一個(gè)字符后面并存儲(chǔ)/在headlist中,顯示聯(lián)接后的字符串的串值。void Length(StrHeadList headlist,ResultType resultype,int &pointcheck)/在headlist中存儲(chǔ)用戶輸入的一個(gè)字符串,然后顯示字符串的長(zhǎng)度。void Substring(StrHeadList he

15、adlist,ResultType resultype,int start,int end)/在headlist中存儲(chǔ)用戶輸入的一個(gè)字符串,并用start、end接受用戶需要獲得的/子串的開始位置和結(jié)束位置。void SbsLocation(StrHeadList headlist,ResultType resultype,int &pointcheck)/在headlist中存儲(chǔ)用戶輸入的兩個(gè)字符串,顯示第二個(gè)字符串在第一個(gè)字符串的/第一次出現(xiàn)的位置。void Replace(StrHeadList headlist,ResultType resultype,int &poi

16、ntcheck)/存儲(chǔ)用戶輸入的三個(gè)字符串,在第一個(gè)字符串中查找與第二個(gè)字符串相等的子串/并用第三個(gè)字符串替換之,顯示替換后的字符串。void Show(StrHeadList headlist,ResultType resultype,int &pointcheck,int k)/resultype接受命令CmdNo,顯示headlist所有存儲(chǔ)的字符串。void Delete(StrHeadList headlist,ResultType resultype,int &pointcheck)/在headlist存儲(chǔ)用戶輸入的內(nèi)部名,將字符串內(nèi)部名轉(zhuǎn)換為整數(shù)類型,/刪除對(duì)應(yīng)內(nèi)

17、部名的字符串,若此內(nèi)部名字符串不存在,則顯示不存在,否則/顯示刪除成功。void End(StrHeadList headlist,ResultType resultype,int &pointcheck,int k)/分析命令,結(jié)束程序的運(yùn)行。void ab(StrHeadList &headlist,ResultType &resultype)/分析用戶輸入的命令,存儲(chǔ)用戶輸入的字符串,并調(diào)用相應(yīng)的命令函數(shù)。其中操作的算法如下:1.void ab(StrHeadList &headlist,ResultType &resultype)/主函數(shù)定義fo

18、r(;c!='n') c=getchar();/從屏幕讀取一個(gè)字符if(check=0) GetCommand(c,headlist,resultype);/調(diào)用命令匹配函數(shù)check=1;/check賦值為1,限制只調(diào)用一次命令匹配函數(shù) if(c='''&&start=1)/如果字符串輸入結(jié)束 start=0;headlist.StrHeadi.length=length; /獲得字符串長(zhǎng)度headlist.StrHeadi.chlength='0'/字符串結(jié)束符length=0; /變量length置為0 result

19、ype.sj=i;/記錄輸入的字符串的內(nèi)部名j+; pointcheck+=1; /用于命令語法判斷continue; /結(jié)束循環(huán) if(c=''')&&start=0)/如果字符串讀取開始 pointcheck+=1;start=1; while(headlist.StrHeadi.ch)/尋找還沒分配的串指針的下標(biāo) i+; if(start=1) if(!headlist.StrHeadi.ch)/如果未分配存儲(chǔ)空間headlist.StrHeadi.ch=(char *)malloc(SIZE*sizeof(char);if(c!='

20、9;')/如果讀取的字符串不為'headlist.StrHeadi.chlength=c;/存儲(chǔ)字符headlist.StrHeadi.length+; /字符長(zhǎng)度自增length+;k+;/用于命令語法判斷switch(resultype.CmdNo)/選擇對(duì)應(yīng)命令的對(duì)應(yīng)函數(shù) case 1:Assignment(headlist,resultype,pointcheck);break; case 2:Equal(headlist,resultype,pointcheck);break; case 3:Connect(headlist,resultype,pointcheck)

21、;break; case 4:Length(headlist,resultype,pointcheck); case 5:Substring(headlist,resultype,pointcheck);break; case 6:SbsLocation(headlist,resultype,pointcheck);break; case 7:Replace(headlist,resultype,pointcheck);break; case 8:Show(headlist,resultype,pointcheck,k); case 9:Delete(headlist,resultype,po

22、intcheck);break; case 10:End(headlist,resultype,pointcheck,k);break; case 11:printf("t不存在此命令,請(qǐng)重新輸入!n");ab(headlist,resultype);break; default: break; 2.void GetCommand(char c,StrHeadList &headlist,ResultType &resultype) /得到對(duì)應(yīng)輸入的命令switch(c) case 'A': resultype.CmdNo=1;break;c

23、ase 'E': resultype.CmdNo=2;break; case 'C': resultype.CmdNo=3;break; case 'L': resultype.CmdNo=4;break; case 'S': resultype.CmdNo=5;break; case 'I': resultype.CmdNo=6;break; case 'R': resultype.CmdNo=7;break; case 'P': resultype.CmdNo=8;break;

24、case 'D': resultype.CmdNo=9;break; case 'Q': resultype.CmdNo=10;break; default:resultype.CmdNo=11;break;3.void Assignment(StrHeadList headlist,ResultType &resultype,int &pointcheck) /賦值函數(shù)調(diào)用if(pointcheck=2)/ 語法判斷 printf("nt命令輸出的結(jié)果為:");printf("nt新賦值的字符串的內(nèi)部名為:%d,串

25、值為:",resultype.s0);puts(headlist.StrHeadresultype.s0.ch);printf("n"); ab(headlist,resultype);/程序循環(huán)執(zhí)行else printf("nt命令語法錯(cuò)誤!請(qǐng)重新輸入!n"); ab(headlist,resultype);/程序循環(huán)執(zhí)行 4.void Equal(StrHeadList headlist,ResultType resultype,int &pointcheck) /判相等函數(shù)調(diào)用 if(pointcheck=4)/語法判斷 prin

26、tf("t命令輸出結(jié)果為:");if(headlist.StrHeadresultype.s0.length!=headlist.StrHeadresultype.s1.length)/如果兩字符串長(zhǎng)度不相等 printf("UNEQUALn"); ab(headlist,resultype); else for(i=0;i<headlist.StrHead1.length;i+)/各字符判斷 if(headlist.StrHeadresultype.s0.chi!=headlist.StrHeadresultype.s1.chi)/如果有一個(gè)字符

27、不相等 printf("UNEQUAL"); printf("n"); ab(headlist,resultype); printf("EQUAL"); printf("n"); ab(headlist,resultype);/程序循環(huán)執(zhí)行 else printf("nt命令語法錯(cuò)誤!請(qǐng)重新輸入!n"); ab(headlist,resultype);/程序循環(huán)執(zhí)行 5.void Connect(StrHeadList headlist,ResultType resultype,int &

28、;pointcheck) /字符串聯(lián)接 if(pointcheck=4)/語法判斷printf("t命令輸出結(jié)果為:"); while(headlist.StrHeadi.ch)/尋找還沒分配的串指針的下標(biāo) i+;headlist.StrHeadi.ch=(char*)malloc(headlist.StrHeadresultype.s0.length+headlist.StrHeadresultype.s1.length)*sizeof(char);/分配長(zhǎng)度為兩個(gè)字 符串總長(zhǎng)度的空間for(;j<(headlist.StrHeadresultype.s0.leng

29、th);j+)/存儲(chǔ)第一個(gè)字符串headlist.StrHeadi.chj=headlist.StrHeadresultype.s0.chj; for(;k<(headlist.StrHeadresultype.s1.length);k+)/存儲(chǔ)第二個(gè)字符串 headlist.StrHeadi.chheadlist.StrHeadresultype.s0.length+k=headlist.StrHeadresultype.s1.chk; headlist.StrHeadi.length=k+j;/得到聯(lián)接后字符串的總長(zhǎng)headlist.StrHeadi.chk+j='0'

30、;/字符串結(jié)束符 printf("nt聯(lián)接后的字符串的內(nèi)部名為:%d,串值為:",i);puts(headlist.StrHeadi.ch); printf("n"); ab(headlist,resultype);/程序循環(huán)else printf("nt命令語法錯(cuò)誤!請(qǐng)重新輸入!n"); ab(headlist,resultype); 6.void Length(StrHeadList headlist,ResultType resultype,int &pointcheck)/求字符串的長(zhǎng)度if(pointcheck=2)

31、/語法格式判斷 printf("t命令輸出結(jié)果為:"); printf("字符串的長(zhǎng)度為:%d",headlist.StrHeadresultype.s0.length); printf("n"); ab(headlist,resultype);/程序循環(huán) else printf("nt命令語法錯(cuò)誤!請(qǐng)重新輸入!n"); ab(headlist,resultype);/程序循環(huán) 7.void Substring(StrHeadList headlist,ResultType resultype,int pointc

32、heck) /求子字符串函數(shù)調(diào)用while(true) if(pointcheck=2)/如果語法正確 printf("t請(qǐng)輸入子串的開始位置:"); scanf("%d",&start); printf("t請(qǐng)輸入子串的結(jié)束位置:"); scanf("%d",&end);if(start=-1)|(start>0&&start<=headlist.StrHeadresultype.s0.length&&end<=headlist.StrHeadre

33、sultype.s0.length&&end>=start)/如果輸入數(shù)據(jù)不正確 break;/退出循環(huán) else /如果語法不正確 printf("tstart不能小于0或大于字符串的長(zhǎng)度n"); printf("tend不能小于start且不能大于字符串的長(zhǎng)度n"); printf("t請(qǐng)重新輸入子串長(zhǎng)度n"); start=0; end=0; else printf("nt命令語法錯(cuò)誤!請(qǐng)重新輸入!n"); ab(headlist,resultype); if(start=-1) pri

34、ntf("t命令輸出結(jié)果為:");for( i=start;i<=end;i+)/顯示從start到end長(zhǎng)度的子字符串printf("%c",headlist.StrHeadresultype.s0.chi);printf("n");ab(headlist,resultype);/程序循環(huán)elseab(headlist,resultype);/程序循環(huán)7.void SbsLocation(StrHeadList headlist,ResultType resultype,int &pointcheck) /子串在主串的

35、第一次出現(xiàn)的位置if(pointcheck=4&&headlist.StrHeadresultype.s1.length!=0)/語法判斷 printf("t命令輸出結(jié)果為:");for(;i<=(headlist.StrHeadresultype.s0.length-headlist.StrHeadresultype.s1.length);i+)/尋找子串 if(headlist.StrHeadresultype.s0.chi=headlist.StrHeadresultype.s1.ch0)/如果主串某個(gè)字符與子串第一個(gè)字符相等 for(j=0;j

36、<headlist.StrHeadresultype.s1.length;j+) /判斷主串的子串與指定子串是否相等 if(headlist.StrHeadresultype.s0.chi+j=headlist.StrHeadresultype.s1.chj)/如果相等check+1 check+=1; if(check=headlist.StrHeadresultype.s1.length)/如果主串的子串與指定子串是否相等 printf("nt第二字符串首次出現(xiàn)的位置為:%d",i+1); printf("n"); break; else ch

37、eck=0; /printf("%d",check); if(i>(headlist.StrHeadresultype.s0.length-headlist.StrHeadresultype.s1.length)/如果不存在子串 printf("nt第一字符串不存在第二字符串"); printf("n"); ab(headlist,resultype);/程序循環(huán)else printf("nt命令語法錯(cuò)誤!請(qǐng)重新輸入!n"); ab(headlist,resultype);/程序循環(huán) 8.void Repla

38、ce(StrHeadList headlist,ResultType resultype,int &pointcheck)/子串替換函數(shù)while(headlist.StrHeadcurrent.ch)/尋找還沒分配的串指針的下標(biāo) current+;headlist.StrHeadcurrent.ch=(char *)malloc(SIZE*sizeof(char); if(pointcheck=6)/語法判斷 printf("t命令輸出結(jié)果為:"); headlist.StrHeadcurrent.length=0;/替換后的子串存儲(chǔ)在headlist.StrHe

39、ad0.ch中for(i=0;i<=headlist.StrHeadresultype.s0.length-headlist.StrHeadresultype.s1.length;i+,n+)/尋找相同子串并替換 if(headlist.StrHeadresultype.s0.chi=headlist.StrHeadresultype.s1.ch0)/尋找主串相同的子串 for(j=i,k=0;j<i+headlist.StrHeadresultype.s1.length;j+,k+) if(headlist.StrHeadresultype.s0.chj=headlist.Str

40、Headresultype.s1.chk) m+; else headlist.StrHeadcurrent.chn=headlist.StrHeadresultype.s0.chi;/不然將不相等字符存在headlist.StrHead0.ch中 if(m=headlist.StrHeadresultype.s1.length)/如果找到相同的子串 if(headlist.StrHeadresultype.s2.length!=0) /如果替換串不是空串for(j=i,k=0;j<i+headlist.StrHeadresultype.s2.length;j+,k+)/將 替換串存儲(chǔ)在

41、headlist.StrHead0.ch headlist.StrHeadcurrent.chn=headlist.StrHeadresultype.s2.chk; n+;/替換后子串的長(zhǎng)度自增 i=i+headlist.StrHeadresultype.s1.length-1; n=n-1; m=0; for(;i<headlist.StrHeadresultype.s0.length;i+) headlist.StrHeadcurrent.chn=headlist.StrHeadresultype.s0.chi; n+; headlist.StrHeadcurrent.length=

42、n-1;/得到替換后字符串的長(zhǎng)度 headlist.StrHeadcurrent.chn='0'/字符串結(jié)束符 puts(headlist.StrHeadcurrent.ch); printf("n"); ab(headlist,resultype);/程序循環(huán) else printf("nt命令語法錯(cuò)誤!請(qǐng)重新輸入!n"); ab(headlist,resultype);/程序循環(huán) 9.void Show(StrHeadList headlist,ResultType resultype,int &pointcheck,int

43、k) /顯示字符串函數(shù)if(pointcheck=0&&k=2)/語法判斷printf("t命令輸出結(jié)果為:");while(headlist.StrHeadi.ch)/輸出不是空串的字符串 printf("nt內(nèi)部名:%dt串值:",i);puts(headlist.StrHeadi.ch);i+;printf("n"); ab(headlist,resultype);/程序循環(huán) else printf("nt命令語法錯(cuò)誤!請(qǐng)重新輸入!n"); ab(headlist,resultype);/程序

44、循環(huán)10.void Delete(StrHeadList headlist,ResultType resultype,int &pointcheck) /刪除指定內(nèi)部名的字符串 if(headlist.StrHeadresultype.s0.length<3&&headlist.StrHeadresultype.s0.length>0)/如果輸入的內(nèi)部名大于100或小于0 if(headlist.StrHeadresultype.s0.length=1)/如果輸入內(nèi)部名只是一位數(shù) if(headlist.StrHeadresultype.s0.ch0<

45、48|headlist.StrHeadresultype.s0.ch0>57)/內(nèi)部名只能輸入數(shù)字 printf("nt內(nèi)部名只能輸入數(shù)字!請(qǐng)重新輸入!n"); ab(headlist,resultype); shu=headlist.StrHeadresultype.s0.ch0-48; else if(headlist.StrHeadresultype.s0.ch0<48|headlist.StrHeadresultype.s0.ch0>57)|(headlist.StrHeadresultype.s0.ch1<48|headlist.StrHe

46、adresultype.s0.ch1>57)/內(nèi)部名只能輸入數(shù)字 printf("nt內(nèi)部名只能輸入數(shù)字!請(qǐng)重新輸入!"); ab(headlist,resultype); shu=(headlist.StrHeadresultype.s0.ch0-48)*10+(headlist.StrHeadresultype.s0.ch1-48);/計(jì)算兩位的數(shù)字 if(pointcheck=2)/語法判斷 printf("t命令輸出結(jié)果為:");char *p;if(headlist.StrHeadshu.ch=NULL)/如果指定的字符串為空 print

47、f("nt此內(nèi)部名為空!請(qǐng)重新輸入!n"); ab(headlist,resultype);/程序循環(huán) elsep=headlist.StrHeadshu.ch; free(p); /釋放指定的空間headlist.StrHeadshu.ch=NULL;if(!headlist.StrHeadshu.ch) printf("nt刪除成功!n"); ab(headlist,resultype); /程序循環(huán)else printf("nt命令語法錯(cuò)誤!請(qǐng)重新輸入!n"); ab(headlist,resultype);/程序循環(huán) else

48、 printf("nt命令語法錯(cuò)誤!內(nèi)部名不能小于0和大于100和只能為數(shù)字!n"); ab(headlist,resultype); /程序循環(huán)11.void End(StrHeadList headlist,ResultType resultype,int &pointcheck,int k) /退出函數(shù) if(pointcheck=0&&k=2)/語法判斷if(resultype.CmdNo=10)while(true) /結(jié)束程序return;else printf("nt命令語法錯(cuò)誤!請(qǐng)重新輸入!n"); ab(head

49、list,resultype);/程序循環(huán)3.主函數(shù) void main()StrHeadList headlist;/創(chuàng)建串表頭 ResultType resultype;/創(chuàng)建命令存儲(chǔ)類型for( j=0;j<100;j+)/將各串的的頭指針置換為空指針headlist.StrHeadj.ch=NULL;for( i=0;i<3;i+)resultype.si=0; /第一個(gè)串頭指針開辟大小為SIZE的字符存儲(chǔ)空間 printf("t學(xué)院:計(jì)算機(jī)學(xué)院 專業(yè):網(wǎng)絡(luò)工程 學(xué)號(hào):3111006293 姓名:湯瑞華 班級(jí):1班n");printf("ttt

50、t命令列表n");/顯示命令列表printf("t1.賦值命令 A 例: A 'string'n");printf("t2.判相等命令 E 例: E 'string' 'string'n"); printf("t3.聯(lián)接命令 C 例: C 'string' 'string'n"); printf("t4.求長(zhǎng)度命令 L 例: L 'string'n"); printf("t5.求子串命令 S 例: S

51、 'string'n");printf("t6.子串定位命令 I 例: I 'string' 'ing' n");printf("t7.串替換命令 R 例: R 'string' 'ing' 'abc'n");printf("t8.顯示命令 P 例: P n"); printf("t9.刪除命令 D 例: D '3'n");printf("t10.退出命令 Q 例: Q n");printf("ttt請(qǐng)輸入指令和字符串n");

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論