數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)湖南工程學(xué)院_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)湖南工程學(xué)院_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)湖南工程學(xué)院_第3頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)報(bào)告課程名稱數(shù)據(jù)結(jié)構(gòu)課題名稱txt 文本編輯器專業(yè)通信工程班級學(xué)號(hào)姓名指導(dǎo)老師張鏖烽彭禎黃哲2015年7月5日湖南工程學(xué)院課程設(shè)計(jì)任務(wù)書課程名稱課題數(shù)據(jù)結(jié)構(gòu)txt 文本編輯器專業(yè)班級學(xué)生姓名學(xué)號(hào)指導(dǎo)老師張鏖烽彭禎黃哲審批張鏖烽任務(wù)書下達(dá)日期2015年 6月 29日任 務(wù) 完成日期2015年 7月 5日目錄需求分析41. 問題描述 :42, 基本要求:43. 輸入形式:44. 輸出形式:45. 測試數(shù)據(jù):4概要設(shè)計(jì)51 結(jié)構(gòu)體的定義 :52 主程序流程圖53 各函數(shù)調(diào)用6詳細(xì)設(shè)計(jì)61 定義單鏈表62 全局變量的定義63 函數(shù)偽碼74 各函數(shù)調(diào)用關(guān)系圖14調(diào)試分析151 調(diào)試過程中遇到的問

2、題152 算法時(shí)空分析163 經(jīng)驗(yàn)與體會(huì)16用戶使用說明16測試結(jié)果17附錄21課程設(shè)計(jì)評分表33需求分析1.問題描述 :編制一個(gè)可實(shí)現(xiàn)txt 文件編輯系統(tǒng)的程序;輸入一個(gè)文本,其可統(tǒng)計(jì)文本中總字?jǐn)?shù)、英文字母數(shù)、空格數(shù)等;查找、替換某個(gè)字符串;插入刪除某個(gè)字符串。2,基本要求:統(tǒng)計(jì):統(tǒng)計(jì)文本中總字?jǐn)?shù)、英文字母的數(shù)量;查找:查找某個(gè)字符串出現(xiàn)的次數(shù)以及位置;替換:將文本中的某個(gè)字符串全部替換為另一個(gè)字符串。插入:在某個(gè)位置i 插入一個(gè)字符串;刪除:在某個(gè)位置i 開始刪除連續(xù) j 個(gè)字符。3.輸入形式:數(shù)字,大小寫英文字母,空格,標(biāo)點(diǎn)符號(hào)4.輸出形式:分行輸出字符即文本內(nèi)容,輸出文本英文字母的數(shù)量

3、和總字?jǐn)?shù),輸出某一字符串被替換后的文本內(nèi)容,輸出某一字符串被刪除后的文本內(nèi)容,輸出插入某一字符串后的文本內(nèi)容。5.測試數(shù)據(jù):從存儲(chǔ)器中讀取一個(gè)txt 文件(或以自己的程序文件為例),輸出每次操作之后的結(jié)果。概要設(shè)計(jì)1 結(jié)構(gòu)體的定義 :typedef struct listchar data60;/規(guī)定一行字不得大于60, 大于則換行int line;/輸入文章的總行書int length;/一行字符的實(shí)際長度struct list *next;struct list *pre; LinkList;2 主程序流程圖主頁選擇Booki文本Displa文本退出n 函數(shù)統(tǒng)計(jì)y函內(nèi)容用 于頁面數(shù),文的處

4、輸入本顯理示英文字母數(shù)總字?jǐn)?shù)SearchDeleteReplaceDisplay主頁退出3 各函數(shù)調(diào)用(1)Bookin()文本輸入函數(shù)(2)Display()文本顯示函數(shù)(3)Search()查找函數(shù)(4)Statistic()統(tǒng)計(jì)英文字母個(gè)數(shù)和總字?jǐn)?shù)(5)Delete()刪除函數(shù)(6)Resplace()替換函數(shù)(7)Insert ()插入函數(shù)(8)Bmenu()分菜單函數(shù)(9) menu()主菜單函數(shù)(10)main()主函數(shù)詳細(xì)設(shè)計(jì)1 定義單鏈表typedef struct listchar data60;/規(guī)定一行字不得大于60, 大于則換行int line;/輸入文章的總行書int

5、 length;/一行字符的實(shí)際長度struct list *next;struct list *pre; LinkList;2 全局變量的定義LinkList *h; / 定義文章首行的頭指針3 函數(shù)偽碼Bookin() 文本輸入函數(shù)LinkList *temp;/定義指針變量 *temp, 類型 LinkListchar ch;int i,j;/定義輸入變量ch,變量 i 變量 j 分別表示行數(shù)和每行字符數(shù);h->next=(LinkList *)malloc(sizeof(LinkList);/申請存儲(chǔ)空間h->pre=NULL;/首行頭指針的前驅(qū)指針為空temp=h->

6、;next;/首行指針temp->pre=NULL;/首行指針的前驅(qū)指針也為空temp->length=0;/文章長度初始值為0for(i=0;i<60;i+)temp->datai='0'printf("請輸入文章(輸入for(j=0;j<Link_Size;j+)/#結(jié)束) :n");/控制一頁初始化為字符串結(jié)束標(biāo)志 for(i=0;i<60;i+)/控制一行ch=getchar();/temp->datai=ch;/temp->length+;/接收輸入的字符給ch給 temp 指向的行賦值行的字符長度加

7、 1if(ch='#') LINE=j; break;/文章結(jié)束時(shí),LINE 整個(gè)文章的行數(shù)if(ch='#') temp->length=i;temp->next=NULL;break;temp->next=(LinkList *)malloc(sizeof(LinkList) ;/ 若換行,重新分配空間建立下一行temp->next->pre=temp;/給 temp 的前驅(qū)指針賦值temp=temp->next; /tempfor(i=0;i<60;i+)temp->datai='0'指向目前

8、這一行temp->line=LINE+1;/計(jì)算整個(gè)文章的行數(shù)Display()顯示文章內(nèi)容int i,j; /定義變量 j , i 分別為行數(shù)和每行字符數(shù)LinkList *p;/定義指針變量p=h->next;/指針 p 指向鏈表表頭printf("n目前文章的內(nèi)容 :");for(j=0;j<=LINE&&p!=NULL;j+)/利用循環(huán)輸出鏈表中信息即文本內(nèi)容for(i=0;(i<60)&&(p->datai)!='#'i+)printf("%c",p->data

9、i);p=p->next;Statistic()統(tǒng)計(jì)字?jǐn)?shù)函數(shù)LinkList *temp;/定義指針變量tempchar ch;int i,j,t; /定義變量j ,i分別為行數(shù)和每行字符數(shù)int WORD=0,word=0,space=0,num=0, sum1=0,sum2=0;/ 定義變量大寫字母數(shù)、 小寫字母數(shù)、空格數(shù)、數(shù)字?jǐn)?shù)、英文字母數(shù)和總字?jǐn)?shù)temp=h->next;/指針 temp 指向鏈表表頭for(j=0;j<=LINE;j+)/利用循環(huán)對鏈表中信息進(jìn)行判斷for(i=0;(i<60)&&(temp->datai)!='#

10、'i+)ch=temp->datai;if(ch>='A')&&(ch<='Z')WORD+;/記錄大寫字母數(shù)else if(ch>='a')&&(ch<='z')word+;/記錄小寫字母數(shù)else if(ch>='0')&&(ch<='9')num+;/記錄數(shù)字?jǐn)?shù)else if(ch=' ')/記錄空格數(shù)space+;sum1=WORD+word;/ 英文字母數(shù)sum2=WORD+w

11、ord+num+spcace+punct;/文本總字?jǐn)?shù)Search( )查找函數(shù)char Data30 ;/inti,j,k=0,sum=0;/定義一個(gè)數(shù)組,表示需要查找的字符內(nèi)容定義定義變量 j ,i ,sum表示字母出現(xiàn)次數(shù)int l=1;temp=h->next;/使指針變量指向鏈表表頭strcpy(Data,str1);/將形參中 str1的值賦給 Datafor(i=0;i<=LINE;i+)for(j=0;j<60;j+)if(temp->dataj)=Datak) k+;/將輸入的查找字符與文本比較,找到第一個(gè)相同的字符else if(Datak!=

12、9;0') j=j-k;k=0; /從主串第 j-k個(gè)位置重新查找if(Datak='0')sum+;j=j-k+1;printf("tt第 %d 次 出 現(xiàn) 在 第 %d 行 第 %d 列n",l,i+1,j+1);l+;/此字符出現(xiàn)的次數(shù)加1k=0;continue;temp=temp->next; /指向下一行Delete()刪除函數(shù) char Data30; /定義一個(gè)數(shù)組用來存放需要?jiǎng)h除的字符或字符串LinkList *temp,*te; / int i,j,k,m,y,num;/ strcpy(Data,str2); /定義指針變量

13、 :LinkList *temp,*te定義整形變量用來控制行數(shù)、字符數(shù)使用 copy 函數(shù)講形參中需要?jiǎng)h除的字符或字符串賦值給已定義的數(shù)組for(y=0;y<C;y+) /使用循環(huán)查找到需要?jiǎng)h除字符或者字符串的字符數(shù)以及字符或者字符串的位置,以便于刪除num=60;k=0,m=0;temp=h;for(i=0;i<=LINE;i+) /查找匹配的字符或字符串te=temp;temp=temp->next;for(j=0;j<60;j+)if(temp->dataj)=Datak) k+;else if(Datak!='0') j=j-k;k=0;

14、if(Datak='0')num=j;break;if(num<60) break;for(;i<=LINE;i+)for(;j<60;j+)if(j+1<k)te->data60-k+num=temp->dataj+1;/刪除的字符串不在最后一行,將由temp 指向的那行前移到前行elsetemp->dataj-k+1=temp->dataj+1;/當(dāng)要?jiǎng)h除的字符串在最后一行只要將最后一行的字符前移te=temp;temp=temp->next;j=0;/在使用循環(huán),從查找到的字符或者字符串開始一行一行的進(jìn)行刪除 Inse

15、rt()插入函數(shù)char Data30; /定義需要插入的字符或者字符串的輸入數(shù)組int h,l;/定義需要插入的字符或者字符串的插入的行和列printf("ntt請輸入要插入的字符或字符串:");getchar();gets(Data);printf("ntt當(dāng)前文章內(nèi)容為 :");Display();printf("ntt請輸入要插入的行 :");scanf("%d",&h);printf("ntt請輸入要插入的列 :");scanf("%d",&l);i

16、nt i=(h-1)*60+l;/定義一個(gè)整形變量,確定插入位置LinkList *a; /定義一指針變量int n=strlen(Data);int m ;int insertLine=i/60+1;/確定插入位置的行數(shù)int line=temp->line;/將全局變量記錄的行數(shù)賦值給lineint j;if(insertLine=line)/判斷插入位置是否在最后一行for(m=temp->length-1;m>=(i%60)&&n>0;m-)temp->datam+n=temp->datam;/將最后一行插入位置后面的所有字符向后移n

17、 位for(m=(i%60),j=0;m<n+(i%60);m+,j+)temp->datam=Dataj; /將要插入的字符或者字符串賦值到要插入的位置else/如果插入的位置不再最后一行int r=0;for(int p=insertLine; p<line;p+)if(p = insertLine)r=0;elser=n;for(m=temp->length-1-r;m>=0&&n>0;m-)temp->datam+n=temp->datam;/ 將最后一行整體后移 n 位 a=temp;temp = temp->pr

18、e;temp->length = 60;for(m = temp->length-n,j=0;m<temp->length;m+,j+)a->dataj=temp->datam; /將前一行后 n 個(gè)字符移到下一行的前 n 個(gè)字符位置for(m=temp->length-n-1;m>=(i%60);m-) temp->datam+n=temp->datam; / 插入行位置后的字符后移n 位for(m=(i%60),j=0;m<(i%60)+n;m+,j+)temp->datam =Dataj;/將要插入的字符賦值到插入的

19、位置;Replace() 替換函數(shù)char Data30; /定義需要替換的字符或者字符串的輸入數(shù)組int h,l;/定義需要替換的字符或者字符串的替換的行和列printf("ntt請輸入要替換的字符或字符串:");getchar();gets(Data);printf("ntt當(dāng)前文章內(nèi)容為 :");Display();printf("ntt請輸入要替換的行 :");scanf("%d",&h);printf("ntt請輸入要替換的列 :");scanf("%d",

20、&l);int i=(h-1)*60+l;/定義一個(gè)整形變量,確定需替換位置LinkList *a; /定義一指針變量int n=strlen(Data);int m ;int ReplaceLine=i/60+1;/確定替換位置的行數(shù)int line=temp->line;/將全局變量記錄的行數(shù)賦值給lineint j;if(ReplaceLine=line)/判斷替換位置是否在最后一行for(m=(i%60),j=0;m<n+(i%60);m+,j+)temp->datam=Dataj; /將要替換的字符或者字符串賦值到要替換的位置else/如果替換的位置不再最后

21、一行int r=0;for(int p=ReplaceLine; p<line;p+)if(p = ReplaceLine)r=0;elser=n;for(m=(i%60),j=0;m<(i%60)+n;m+,j+)temp->datam =Dataj;/將要替換的字符賦值到替換的位置4 各函數(shù)調(diào)用關(guān)系圖Main()Menu()Bookin()Display()Statistic()Search()Replace()Insert()Delete()調(diào)試分析1 調(diào)試過程中遇到的問題由于首先沒設(shè)置數(shù)組最大值,導(dǎo)致數(shù)組不能正確輸入,后來定義了#definemaxsize100 才解

22、決這個(gè)問題開始統(tǒng)計(jì)中沒有考慮空格和標(biāo)點(diǎn)符號(hào)導(dǎo)致統(tǒng)計(jì)不正確插入時(shí)根本找不著插入位置。后來設(shè)置了頭指針和指針變量2 算法時(shí)空分析本算法的空間復(fù)雜度為O(N)。輸出函數(shù)、 查找函數(shù)算法時(shí)間復(fù)雜度均為O( N),其他函數(shù)的時(shí)間復(fù)雜度較高3 經(jīng)驗(yàn)與體會(huì)通過這次充實(shí)的課程設(shè)計(jì), 我們的上機(jī)實(shí)踐沒有像這次課程設(shè)計(jì)一樣做一個(gè)完整的程序來實(shí)現(xiàn) txt 編輯器的功能。因此,這次課程設(shè)計(jì)鍛煉了我的實(shí)踐能力 , 在課程設(shè)計(jì)的過程,我遇到了許多問題 , 多虧老師和同學(xué)的幫助。 雖然結(jié)果十分重要, 但是過程更加寶貴。 總體來說 , 課程設(shè)計(jì)鍛煉了我的動(dòng)手能力 , 相對加強(qiáng)了對課本知識(shí)的應(yīng)用。用戶使用說明進(jìn)入主頁后選擇你想

23、要的功能。 如果是第一次運(yùn)行則需要選擇 1 號(hào)功能輸入文本,輸入后若是想查看輸入的文本則選擇 2,若是想退出系統(tǒng)則選擇 5;若是想統(tǒng)計(jì)英文字母數(shù)字和總數(shù)字則選擇 3。若是想查找,刪除,插入,替換字符或者字符串則選擇 4 即可。進(jìn)入統(tǒng)計(jì)和處理分菜單后則可選擇你想要的功能號(hào),按照提示進(jìn)行操作。測試結(jié)果進(jìn)入主頁,選擇1 號(hào)功能輸入文本本:顯示輸入的文本內(nèi)容:選擇 3 號(hào)功能,進(jìn)入文本內(nèi)容統(tǒng)計(jì)頁面:選擇想要統(tǒng)計(jì)的內(nèi)容,比如選擇 1 號(hào)統(tǒng)計(jì)大寫字母的個(gè)數(shù), Hello 2015 !的大寫字母有 1 個(gè) :小寫字母有 4 個(gè):總字?jǐn)?shù)有 11 個(gè),包括英文字母 5 個(gè),標(biāo)點(diǎn)符號(hào) 1 個(gè),空格符號(hào) 1 個(gè),數(shù)

24、字 4 個(gè):退出統(tǒng)計(jì)界面,返回主菜單:查找字符串 2015:刪除字符串 2015:插入字符串 2014:用字符串 good 替換 Hell :退出系統(tǒng):附錄#include"stdio.h"#include"malloc.h"#include"string.h"#include"iostream.h"#include"stdlib.h"#include"conio.h"#define Link_Size 100typedef struct listchar data60;/規(guī)

25、定一行字不得大于 60,大于則換行 int line; /輸入文章的總行書int length; /一行字符的實(shí)際長度struct list *next;struct list *pre; LinkList;LinkList *h;int LINE,C,N;LinkList *Bookin()LinkList *temp; / 定義指針變量 *temp, 類型 LinkList char ch;int i,j;h->next=(LinkList *)malloc(sizeof(LinkList); /申請存儲(chǔ)空間 h->pre=NULL;/ 首行頭指針的前驅(qū)指針為空temp=h-&

26、gt;next; / 首行指針temp->pre=NULL;/ 首行指針的前驅(qū)指針也為空temp->length=0;for(i=0;i<60;i+)temp->datai='0'printf(" 請輸入文章(輸入 #號(hào)結(jié)束) :n");for(j=0;j<Link_Size;j+) /控制一頁for(i=0;i<60;i+) /控制一行ch=getchar();temp->datai=ch;/ 給 temp 指向的行賦值temp->length+;if(ch='#')LINE=j; /文章結(jié)束

27、時(shí), LINE 整個(gè)文章的行數(shù)break;if(ch='#')temp->length=i;temp->next=NULL;break;temp->next=(LinkList *)malloc(sizeof(LinkList) ; /若換行,重新分配空間建立下一行temp->next->pre=temp;/ 給 temp 的前驅(qū)指針賦值temp=temp->next;/temp 指向目前這一行for(i=0;i<60;i+)temp->datai='0'temp->line=LINE+1; /計(jì)算整個(gè)文章的

28、行數(shù)return temp;void Display()int i,j;LinkList *p;p=h->next; / 指針 p 指向鏈表表頭printf("n 目前文章的內(nèi)容 :");for(j=0;j<=LINE&&p!=NULL;j+)/利用循環(huán)輸出鏈表中信息即文本內(nèi)容for(i=0;(i<60)&&(p->datai)!='#'i+)printf("%c",p->datai);p=p->next;void Statistic()LinkList *temp; /

29、 定義指針變量 tempchar ch;int i,j,t;int WORD=0,word=0,space=0,num=0,punct=0,sum1=0,sum2=0; temp=h->next; /指針 temp 指向鏈表表頭 for(j=0;j<=LINE;j+)/ 利用循環(huán)對鏈表中信息進(jìn)行判斷for(i=0;(i<60)&&(temp->datai)!='#'i+)ch=temp->datai;if(ch>='A')&&(ch<='Z')WORD+;else if(c

30、h>='a')&&(ch<='z')word+;else if(ch>='0')&&(ch<='9')num+;else if(ch=' ')space+;elseif(ch=33|ch=34|ch=39|ch=44|ch=46|ch=58|ch=59|ch=63)punct+;sum1=WORD+word;sum2=WORD+word+num+space+punct;while(1)printf("n");printf("tt*

31、文本內(nèi)容統(tǒng)計(jì)*n");printf("n");printf("tt*1、文本中大寫字母的個(gè)數(shù)*n");printf("tt*2、文本中小寫字母的個(gè)數(shù)*n");printf("tt*3、文本中英文字母的個(gè)數(shù)*n");printf("tt*4、文本中數(shù)字的個(gè)數(shù)*n");printf("tt*5、文本中所有字?jǐn)?shù)*n");printf("tt*6、返回主菜單*n");printf("tt*7、直接退出本系統(tǒng)*n");printf(&q

32、uot;tt 請選擇選項(xiàng) :");scanf("%d",&t);switch(t)case 1:printf("ntt 文本中大寫字母的個(gè)數(shù) :%dn",WORD); printf(" 按回車鍵繼續(xù)····· ");getchar();/接受回車鍵被接收輸出getchar();break;case 2:printf("ntt 文本中小寫字母的個(gè)數(shù) :%dn",word);printf(" 按回車鍵繼續(xù)···&

33、#183;· ");getchar();getchar();break;case 3:printf("ntt 文本中英文字母的個(gè)數(shù) :%dn",sum1);printf(" 按回車鍵繼續(xù)····· ");getchar();getchar();break;case 4:printf("ntt 文本中數(shù)字的個(gè)數(shù) :%dn",num);printf(" 按回車鍵繼續(xù)····· ");getchar()

34、;getchar();break;case 5:printf("ntt 文本中所有字?jǐn)?shù) :%dn",sum2);printf(" 按回車鍵繼續(xù)····· ");getchar();getchar();break;if(t=6) break; if(t=7)exit(0);void Search(char *str1,LinkList* temp)char Data30 ; / 定義一個(gè)數(shù)組,表示需要查找的字符內(nèi)容int i,j,k=0,sum=0; ;/ 定義定義變量 j,i , sum 表示字母出現(xiàn)次數(shù)

35、 int l=1;temp=h->next;strcpy(Data,str1);for(i=0;i<=LINE;i+)for(j=0;j<60;j+)if(temp->dataj)=Datak)k+;/ 將輸入的查找字符與文本比較,找到第一個(gè)相同的字符else if(Datak!='0')j=j-k; /從主串第 j-k 個(gè)位置重新查找k=0;if(Datak='0')sum+;j=j-k+1;printf("tt 第%d 次出現(xiàn)在第 %d 行第 %d 列 n",l,i+1,j+1); l+;k=0;continue;

36、temp=temp->next;printf("ttt 字符串總共出現(xiàn)次數(shù)為 :%dnn",sum);C=sum;N=i*60+j;void Delete(char *str2) char Data30; /定義一個(gè)數(shù)組用來存放需要?jiǎng)h除的字符或字符串LinkList *temp,*te;int i,j,k,m,y,num; /定義整形變量用來控制行數(shù)、字符數(shù) strcpy(Data,str2);for(y=0;y<C;y+) /使用循環(huán)查找到需要?jiǎng)h除字符或者字符串的字符數(shù)以及字符或者字符串的位置,以便于刪除num=60;k=0,m=0;temp=h;for(i=

37、0;i<=LINE;i+) / 查找匹配的字符或字符串te=temp;temp=temp->next;for(j=0;j<60;j+)if(temp->dataj)=Datak) k+;else if(Datak!='0') j=j-k;k=0;if(Datak='0')num=j;break;if(num<60) break;for(;i<=LINE;i+)for(;j<60;j+)if(j+1<k)te->data60-k+num=temp->dataj+1; / 刪除的字符串不在最后一行,將由 t

38、emp 指向的那行前移到前行elsetemp->dataj-k+1=temp->dataj+1;te=temp;temp=temp->next;j=0;LinkList * Replace(LinkList *temp)char Data30;int h,l;printf("ntt 請輸入想要替換的字符或字符串:");getchar();gets(Data);printf("ntt 請輸入要替換的行 :");scanf("%d",&h);printf("ntt 請輸入要替換的列 :");s

39、canf("%d",&l);int i=(h-1)*60+l; / 定義一個(gè)整形變量,確定位置LinkList *a; /定義一指針變量int n=strlen(Data);int m ;int replaceLine=i/60+1; / 確定位置的行數(shù)int line=temp->line; / 將全局變量記錄的行數(shù)賦值給 line int j;if(replaceLine=line) / 判斷插入位置是否在最后一行for(m=(i%60),j=0;m<n+(i%60);m+,j+)temp->datam=Dataj;/ 將要替換的字符或者字符串

40、賦值到要替換的位置elseint r=0;for(int p=replaceLine; p<line;p+)if(p = replaceLine)r=0;elser=n;for(m=(i%60),j=0;m<(i%60)+n;m+,j+)temp->datam =Dataj;return temp;LinkList * Insert(LinkList *temp)char Data30;/同上 replace函數(shù)int h,l;printf("ntt 請輸入要插入的字符或字符串:");getchar();gets(Data);printf("nt

41、t 當(dāng)前文章內(nèi)容為 :");Display();printf("ntt 請輸入要插入的行 :");scanf("%d",&h);printf("ntt 請輸入要插入的列 :");scanf("%d",&l);int i=(h-1)*60+l;LinkList *a;int n=strlen(Data);int m ;int insertLine=i/60+1;int line=temp->line;int j;if(insertLine=line)for(m=temp->len

42、gth-1;m>=(i%60)&&n>0;m-) temp->datam+n=temp->datam; /將最后一行插入位置后面的所有字符向后移 n 位for(m=(i%60),j=0;m<n+(i%60);m+,j+)temp->datam=Dataj; /將要插入的字符或者字符串賦值到要插入的位置else/如果插入的位置不再最后一行int r=0;for(int p=insertLine; p<line;p+)if(p = insertLine)r=0;elser=n;for(m=temp->length-1-r;m>=

43、0&&n>0;m-) temp->datam+n=temp->datam; / 將最后一行整體后移 n 位 a=temp;temp = temp->pre;temp->length = 60;for(m = temp->length-n,j=0;m<temp->length;m+,j+) a->dataj=temp->datam; /將前一行后 n 個(gè)字符移到下一行的前 n 個(gè)字符位置for(m=temp->length-n-1;m>=(i%60);m-)temp->datam+n=temp->

44、datam;for(m=(i%60),j=0;m<(i%60)+n;m+,j+)temp->datam =Dataj; /將要插入的字符賦值到插入的位置return temp;void Bmenu(LinkList *temp)char str130;char str230;int a;doprintf("n");printf("tt*文本內(nèi)容處理*n");printf("tt*1、查找文本中的字符或者字符串*n");printf("tt*2、刪除文本中的字符或者字符串*n");printf("

45、;tt*3、插入字符或者字符串*n");printf("tt*4、替換字符或者字符串*n");printf("tt*5、顯示目前文本內(nèi)容*n");printf("tt*6、返回主菜單*n");printf("tt*7、直接退出系統(tǒng)*n");printf("tt請選擇選項(xiàng) :");scanf("%d",&a);switch(a)case 1:printf("ttt 請輸入要查找的字符或字符串:");getchar();gets(str1);Search(str1,temp);printf(" 按回車鍵繼續(xù)·

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論