數(shù)據(jù)結(jié)構(gòu)文本編輯器_第1頁
數(shù)據(jù)結(jié)構(gòu)文本編輯器_第2頁
數(shù)據(jù)結(jié)構(gòu)文本編輯器_第3頁
數(shù)據(jù)結(jié)構(gòu)文本編輯器_第4頁
數(shù)據(jù)結(jié)構(gòu)文本編輯器_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告 一. 需求分析 1. 題目及要求 名稱:簡單的文本編輯器 內(nèi)容:輸入一頁文字,程序可以統(tǒng)計岀文字、數(shù)字、空格的個數(shù)。靜態(tài)存儲一頁文章,每行最多不超過 個字符,共N行。 要求:(1)分別統(tǒng)計岀其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù); (2) 統(tǒng)計某一字符串在文章中岀現(xiàn)的次數(shù),并輸岀該次數(shù); (3) 刪除某一字符或者子串,并將后面的字符前移。 (4) 插入某一字符或者子串。 (5) 查找某一字符或者子串。 存儲結(jié)構(gòu)使用線性表,分別用幾個子函數(shù)實現(xiàn)相應(yīng)的功能;輸入數(shù)據(jù)的形式和范圍:可以輸入大 寫、小寫的英文字母、任何數(shù)字及標(biāo)點符號。 輸岀形式: (1) 分行輸岀用戶輸入的各行

2、字符; (2) 分4行輸岀“全部字母數(shù)、“數(shù)字個數(shù)“、空格個數(shù)“、文章總字?jǐn)?shù)“ (3) 輸岀刪除某一字符串后的文章。 通過題目及其要求可知,本程序應(yīng)實現(xiàn)以下功能: (1) 文章內(nèi)容的輸入:包括字母、標(biāo)點符號、數(shù)字等; (2) 文章內(nèi)容的統(tǒng)計:包括文章中大寫字母、小寫字母、數(shù)字、標(biāo)點符號、空格以 及文章所有字?jǐn)?shù)的個數(shù)的統(tǒng)計; (3) 文章內(nèi)容的處理:包括對文章內(nèi)容的查找、刪除以及對指定位置進行插入操作, 其中在查找的過程中統(tǒng)計岀該字符或字符串在文章中岀現(xiàn)的次數(shù); 2 問題分析 本程序是對一段英文文章的內(nèi)容進行處理,存儲方式采用鏈?zhǔn)酱鎯?,沒有文件操作,故本程序?qū)ζ湮谋緝?nèi) 容的所有操作都是在鏈表中進

3、行的。對于文本的輸入,采用頭插法將文本信息存儲到鏈表已申請好的存儲空間 中,在此部分設(shè)計中最大的問題在于輸入文章過程中輸入的字符數(shù)大于80時如何換行;對于文本內(nèi)容的統(tǒng)計, 使用循環(huán)對已存儲的文章進行匹配,大寫字母數(shù)、小寫字母數(shù)、空格數(shù)、數(shù)字?jǐn)?shù)直接通過比較即可得到,標(biāo)點 符號通過ASCH比較即可得到;對于文本內(nèi)容的處理,查找部分仍是使用循環(huán)對已存儲的文章進行匹配,判斷需 要查找的字符或者字符串是否與文章中某部分內(nèi)容相同,如果存在相同的記錄相同的個數(shù)及位置并輸岀個數(shù)及 位置。刪除部分先使用程序的查找功能對文章中需要刪除的字符或者字符串進行查找,然后對其進行刪除。插 入部分為通過輸入的插入位置(行、

4、列)將字符或者字符串插入到文章制定位置。 二. 概要設(shè)計 數(shù)據(jù)結(jié)構(gòu)選擇: 本程序是對輸入的文字進行操作,故使用的數(shù)據(jù)結(jié)構(gòu)為單鏈表操作。根據(jù)第一部分的問題分析 有該鏈表操作有 3部分: Pre Temp Next 另有全局變量*head,作為文章的頭指針。 故創(chuàng)建了以下結(jié)構(gòu)體: typedef struct _list char data80;/記錄一行字符 int len gth;/記錄一行字符長度 structist *next;/ 后繼指針 structist *pre;/ 前趨指針 int row;/記錄整篇文章的行數(shù) Lin kList; 在文章內(nèi)容創(chuàng)建部分中使用線性表的鏈?zhǔn)酱鎯?,并?/p>

5、用全局變量對文本的各種信息進行存儲; 文章的內(nèi)容統(tǒng)計、刪除、查找、插入都采用鏈表操作完成。 本程序為將菜單功能完美化,使用了大量的do while語句。 概要設(shè)計: 程序框架: * 文本內(nèi)容的 CreatWord() ,將文本內(nèi) 容輸入到已 申請的存儲 空間中 顯示函 數(shù), PrintW ord(),將 當(dāng)前文 本中內(nèi) 容顯示 岀來 文章內(nèi)容統(tǒng)計 菜單, 文章內(nèi)容處理菜單, CountWord(), 以菜單形式顯 示給用戶,對 文章的內(nèi)容進 行各種方式的 統(tǒng)計 Bmenu(),這部分為一 子菜單,使用了包括 SearchWord() DeleteWord()、 lnsertWord()三個函

6、數(shù),對文章內(nèi)容進行 處理 圖1簡單的文本編輯器主框架 一個類似 與作者信 AboutWor d(),顯示 作者信息 退岀 系統(tǒng) 兩個子菜單: 如選擇上圖中功能 3,則有: 圖2簡單的文本編輯器-文本內(nèi)容統(tǒng)計菜單 * * 文章內(nèi)容統(tǒng)計菜單 * kkkk 文章中大寫字母的個數(shù) kkkk 統(tǒng)計 統(tǒng)計 文本 文本 中大 中小 寫字 寫字 母個 母個 數(shù) 數(shù) 統(tǒng)計 文本 中數(shù) 字的 個數(shù) kkkk kkkk kkkk kkkk kkkk kkkk kkkk 6、 3簡單的 文本編輯 本內(nèi)容處 理菜單 根據(jù)以上 各圖,本 程序共設(shè) 文章中小寫字母的個數(shù) 文章中數(shù)字的個數(shù) 文章中標(biāo)點符號的個數(shù) 文章中空格的

7、個數(shù) 文章中所有字?jǐn)?shù) 退岀返回主菜單 直接退岀本系統(tǒng) * 個數(shù) kkkk kkkk kkkk kkkk kkkk kkkk * * * kkkk 文章內(nèi)容處理菜單 kkkk * 判斷 kkkk kkkk kkkk kkkk kkkk 1、 2、 3、 4、 5、 6、 查找文章中的字符或者字符串 刪除文章中的字符或者字符串 向文章中插入字符或者字符串 顯示當(dāng)前文章內(nèi)容 67 返回主菜單 直接退岀系統(tǒng) * 統(tǒng)計統(tǒng)計 返回 文本 個數(shù) 到主 所有 菜單 判斷 理T 文本 直接 退岀 系統(tǒng) kkkk kkkk kkkk kkkk kkkk kkkk 使用子函數(shù) 使用函數(shù) 返回到主菜 單繼續(xù)其他 6

8、使用子函數(shù) 使用子函數(shù) 結(jié)束整個程 SearchWord(), 對存儲在鏈表 DeleteWord(), 對存儲在鏈表 lnsertWord(), 對存儲在鏈表 PrintWord() 將當(dāng)前文本 菜單 中的文本進行 字符或者字符 串查找 中文本進行字 符或者字符串 的刪除 中的文本進行 字符或者字符 串的插入 信息顯示出 計了 11個函數(shù) 1、HeadWord() 標(biāo)題函數(shù),即一個輸岀標(biāo)題,永遠岀現(xiàn)在程序的最頂端 2、 CreatWord()文本輸入函數(shù),實現(xiàn)上圖1菜單功能1,對文本的內(nèi)容進行輸入; 3、 PrintWord()當(dāng)前文本內(nèi)容輸岀函數(shù),實現(xiàn)上圖1菜單功能2以及圖3中功能4,將當(dāng)

9、 前存儲在鏈表中的文本內(nèi)容輸出; 1菜單功能3,對存儲在鏈表中文本內(nèi)容進 4、CountWord()文章內(nèi)容統(tǒng)計函數(shù),實現(xiàn)上圖 行統(tǒng)計,包括對文本內(nèi)容中的大寫字母、小寫字母、數(shù)字、標(biāo)點符號、空格以及文章所有字 數(shù)的個數(shù)的統(tǒng)計;圖 2是對其完整描述; 3菜單功能1中查找部分; 3菜單功能2中刪除部分; 3菜單功能3中插入部分; 5、SearchWord() 文章內(nèi)容查找函數(shù),實現(xiàn)上圖 6、DeleteWord()文章內(nèi)容刪除函數(shù),實現(xiàn)上圖 7、 InsertWord()文章內(nèi)容插入函數(shù),實現(xiàn)上圖 8、 Bmenu()第二子菜單函數(shù),實現(xiàn)上圖1菜單功能4,圖3是此函數(shù)實現(xiàn)的結(jié)果,它將5、 6、7各

10、子函數(shù)集合在此函數(shù)中; 9、 AboutWord()顯示作者信息的函數(shù),實現(xiàn)上圖1菜單功能5。 10、 menu()主菜單函數(shù),其結(jié)果為圖1所顯示部分,將1、2、3、4、8、9等函數(shù)集合。 11、main ()主函數(shù) 各函數(shù)關(guān)系用流程圖形式繪制如下: 圖4各函數(shù)之間的關(guān)系 三詳細設(shè)計 1、定義單鏈表結(jié)點類型 typedef struct _list行表結(jié)構(gòu) char data80;/ 記錄一行字符 int len gth;/記錄一行字符長度 structist *next;/ 后繼指針 structist *pre;/ 前趨指針 int row;/記錄整篇文章的行數(shù) Lin kList; 2、

11、全局變量的定義 int NUM,C,N;/定義全局變量,Num用來記錄行號,C用來記錄子串在主串中岀現(xiàn)的總次數(shù) LinkList *head; /定義全局變量*head,文章首行頭指針 3、各子函數(shù)的偽碼 A)CreatWord ()文本內(nèi)容輸入函數(shù) 具體創(chuàng)建過程如下: a、 定義 LinkList 指針變量 *temp: LinkList *temp; b、 定義文本輸入變量ch,記錄文本行數(shù)變量j,記錄每行字符數(shù)變量i; c、申請動態(tài)存儲空間:head-next=(Li nkList *)malloc(sizeof(Li nkList); d、 首行頭指針的前驅(qū)指針為空:head-p re

12、=NULL; 首行指針:temp=head-n ext; 首行指針的前驅(qū)指針也為空:temp-pre=NULL; 定義沒輸入字符時文章長度為0:temp-le ngth=O; 初始化為字符串結(jié)束標(biāo)志,防止岀現(xiàn)亂碼:for(i=0;idatai=0; e、利用循環(huán)進行文本輸入 for(j=0;jLINK_INIT_SIZE;j+) 控制一頁 for(i=0;idatai=ch; / 給 temp 指向的行賦值 temp-length+;行中字符長度加1 if(ch=#) NUM=j; break; /文章結(jié)束時,Num來記錄整個文章的行數(shù) 在字符輸入的過程中,如果在單行輸入的字符超過了80個字符

13、,則需要以下操作 輸入字符數(shù)大于80,重新分配空間建立下一行 temp-n ext=(L in kList *)malloc(sizeof(Li nkList); 給 temp 的前驅(qū)指針賦值:temp-next-pre=temp; temp 指向當(dāng)前行:temp=temp-next; 將下一行初始化為字符串結(jié)束標(biāo)志,防止岀現(xiàn)亂碼:for(i=0;idatai=0; 記錄整個文章的行數(shù):temp-row=NUM+1; 返回指向最后一行指針:return temp; 文本輸入部分到此結(jié)束。 B )、PrintWord ()當(dāng)前文本輸岀函數(shù) 本子函數(shù)功能為將當(dāng)前存儲在鏈表中的文本信息輸岀在屏幕上,

14、具體偽碼算法如下: a、 定義文本行數(shù)變量j,每行字符數(shù)i: int i,j; b、定義指針變量:LinkList *p; c、將指針p指向鏈表表頭:p=head-next; d、利用循環(huán)輸岀鏈表中信息 : for(j=0;j=NU Mj+) =for(i=0;(idatai)匸 #;i+) =pri ntf(%c,p-datai); p=p-n ext; 文本輸岀函數(shù)到此結(jié)束。 C) 、CountWord() 文本內(nèi)容統(tǒng)計函數(shù) 本子函數(shù)是對文本中內(nèi)容進行統(tǒng)計。具體偽碼算法如下: a、定義指針變量 temp:L in kList *temp; b、 定義記錄文本行數(shù)變量j,每行字符數(shù)i; c、

15、定義記錄文本大寫字母數(shù)、小寫字母數(shù)、空格數(shù)、數(shù)字?jǐn)?shù)、標(biāo)點數(shù)和總字?jǐn)?shù)的變量: int WORD=0,word=0,space=0,n um=O,pu nct=O,sum=O; d、將指針temp指向鏈表表頭 :temp=head-next; e、利用循環(huán)對鏈表中信息進行匹配判斷,將大寫字母數(shù)、小寫字母數(shù)、空格數(shù)、數(shù)字?jǐn)?shù)、標(biāo)點數(shù)和總字 數(shù)統(tǒng)計岀來: for(j=0;j=NUM;j+) for(i=0;(idatai)匸 #;i+) ch=temp-datai; if(ch=A) d、 使用VC+中的拷貝函數(shù),將形參中str1的值賦給 Data: strcpy(Data,str1); e、利用循環(huán)進

16、行查找操作,核心算法為: if(temp-dataj)=Datak) k+;將輸入的查找字符與鏈表中信息比較,找到第一個相同的字符 else if(Datak!=0) j=j-k; k=0; / /從主串第j-k個位置重新查找 if(Datak=0) sum+;此字符岀現(xiàn)的次數(shù)加1 j=j-k+1; j記錄下該字符串岀現(xiàn)的位置 printf(tt 第 d 次岀現(xiàn)在第 d 行第 d 列 n,l,i+1,j+1); l+; k=0; con ti nue; temp=temp-next; / 指向下一行 對文本內(nèi)容查找的部分完成。 E)、DeleteWord() 文本內(nèi)容刪除函數(shù) 此子函數(shù)是對文本

17、內(nèi)容進行刪除。具體偽碼算法如下: f、 定義一個數(shù)組用來存儲需要刪除的字符或者字符串:char Data20; g、定義指針變量:LinkList *temp ,*term ; h、 定義整形變量用來控制行數(shù)、字符數(shù):int i,j,k,m,y,num; i、 使用VC+中拷貝函數(shù)講形參中需要刪除的字符或字符串賦值給已定義的數(shù)組: strcpy(Data,str2); j、 使用循環(huán)進行刪除操作: 其核心算法為: for(i=O;i=NUM;i+) for(j=0;jdataj)=Datak) k+; else if(Datak!=0) j=j-k;k=0; if(Datak=0) n um=

18、j; break; if(n um80) break; 首先是使用循環(huán)查找到需要刪除字符或者字符串的字符數(shù)以及字符或者字符串的位置,以便于刪除; for(;i=NUM;i+) for(;j80;j+) if(j+1data80-k+ num=temp-dataj+1; /刪除的字符串不在最后一行,將下一行的字符(由 temp指向)前移到前行 else temp-dataj-k+1=temp-dataj+1; /當(dāng)要刪除的字符串在最后一行只要將最后一行 的字符前移 term=temp; temp=temp-n ext; j=0; /在使用循環(huán),從查找到的字符或者字符串開始進行刪除,在一行刪除完畢

19、之后,轉(zhuǎn)至下一 行進行刪除。 刪除部分到次完成。 F )、lnsertWord() 文本內(nèi)容插入函數(shù) 此函數(shù)為向文本中插入字符或者字符串。具體偽碼如下: a、 定義需要插入的字符或者字符串的輸入數(shù)組:char Data20; b、 定義需要插入的字符或者字符串的插入的行和列:int h,l; c、進行輸入操作,將上述兩個部分進行輸入 d、 定義一個整形變量,確定插入的具體位置:int i=(h-1)*80+l; e、定義一指針變量:Lin kList *a; f、 對輸入的字符進行插入操作,具體核心算法如下: int n=strle n( Data); int m ; intinsertRow

20、=i/80+1;確定插入位置的行數(shù) int row=temp-row;/將全局變量記錄的行數(shù)賦值給row int j; if(i nsertRow=row)判斷插入位置是否在最后一行 for(m=temp-le ngth-1;m=(i%80)m-) temp-datam+n=temp-datam;將最后一行插入位置后面的所有字符向后移n位 for(m=(i%80),j=0;mdatam=Dataj; /將要插入的字符或者字符串賦值到要插入的位置 else/如果插入的位置不再最后一行 int r=0; for(i nt p=in sertRow; ple ngth-1-r;m=0m-) temp

21、-datam+n=temp-datam; 將最后一行整體后移n 位 a= temp; /p指向前一行 temp = temp-pre;/temp 指向前一位 temp-le ngth = 80; for(m = temp-le ngth-n,j=O;mle ngth;m+,j+) a-dataj=temp-datam; /將前一行后n個字符移到下一行的前n個字符位置 for(m=temp-le ngth-n-1;m=(i%80);m-) temp-datam+n=temp-datam;插入行位置后的字符后移n位 for(m=(i%80),j=0;mdatam =Dataj;/將要插入的字符賦值

22、到插入的位置 return temp; E) 、Bmenu ()文本內(nèi)容處理菜單 本函數(shù)為文本內(nèi)容處理菜單,即使用循環(huán)語句對文本內(nèi)容處理部分的子函數(shù)集中在此函數(shù)中。 F) 、HeadWord()、AboutWord() 輸岀信息函數(shù) 這兩個子函數(shù)為本人自己另加的輸岀程序信息的函數(shù); HeadWord ()是將一標(biāo)題輸岀在DOS節(jié)面的最上端; AboutWord ()是顯示作者信息; G )、menu () main () 主菜單函數(shù)以及主函數(shù); 本人將主菜單單獨創(chuàng)建為一個子函數(shù),方便觀看。仍然是很簡單的循環(huán)語句實現(xiàn)。 主函數(shù)為: void mai n() head=(Li nkList *)m

23、alloc(sizeof(Li nkList); Lin kList *temp; men u(temp); 先為head申請存儲空間,然后創(chuàng)建指針變量temp,然后直接在主菜單函數(shù)中進行其他操作。 四調(diào)試分析 1、上機調(diào)試過程中遇到的問題及解決方法: a) 由于本程序的操作大部分都為經(jīng)常使用的查找、刪除、插入,基本的算法及代碼都可以通過查找資料得 至嘰故沒有岀現(xiàn)多大的問題。錯誤主要是在于刪除及插入等子函數(shù)中復(fù)雜操作過程中岀現(xiàn)的小問題。 b) 刪除及插入過程中需要在子函數(shù)中定義一個數(shù)組變量,用來存儲輸入的信息,然后用來與鏈表中的信息 C+中的 進行比較以達到刪除或者插入。另為達到將輸入的信息賦

24、值給子函數(shù)中定義的數(shù)組,特使用了 strcpy ()函數(shù)。 c) 為了將程序界面更加的完美,做了3個菜單,還寫了一個子函數(shù)專門將標(biāo)題顯示在程序最上端。清屏函 數(shù)使用 system (“ cls ”)。 2、時間,空間性能分析: 本算法的空間復(fù)雜度很低,只需要文本的行數(shù)(N 1)*80+L (最后一行字符數(shù))的數(shù)組存放結(jié)果,因此空 間復(fù)雜度為 0(N)。但是本算法的時間復(fù)雜度比較高,由于輸岀函數(shù)、查找函數(shù)算法時間復(fù)雜度均為0( N),但 是刪除函數(shù)、插入函數(shù)算法的時間復(fù)雜度較高。但是,我暫時還問想到時間復(fù)雜度更小的算法,因此在這里我 無法對該算法進行優(yōu)化。 3、經(jīng)驗和體會: 得到文本編輯器這一課

25、程設(shè)計題目時,自己還比較害怕是制作向windows系統(tǒng)中記事 本一樣的程序??戳巳蝿?wù)書之后自己有了些欣慰,任務(wù)書上要求是對輸入的信息進行操作,這是我們經(jīng)常練習(xí) 的內(nèi)容,雖然是比平時練習(xí)的更為難,更有深度,但自己畢竟知道該向什么方向去努力,自己應(yīng)該如何去編寫 這個程序。所以自己在整個課程設(shè)計過程中還是比較輕松的,編寫過程中遇到的困難及問題都通過查閱資料、 向老師提問得以解決。這都是基于對課題有一個明確的了解,清楚向什么方向去寫。所以本次課程設(shè)計自己最 大的體會就是不管寫什么程序,自己首先得對這個問題要分析透徹,要知道自己要干什么,然后才能讓自己干 什么。 五測試結(jié)果 測試文章: Real?bea

26、uty?comes?from?lear nin g,?grow in g,?a nd?lovi ng?i n?the?ways?of?life.?That?is?the?Art?of?Life.?Yo u?ca n?lear n? slowly,?a nd?sometimes?pai nfully,?by?just?waiti ng?for?life?to?happe n? to?you.?Or?you?ca n?c hoose?to?accelerate?your?growth?a nd?i nten ti on ally?devour?life?a nd?all?it?offers.?Yo

27、u?are?the?artist?that ?pai nts?your?future?with?the?brush?of?today.? 運行程序后: 圖5程序主菜單 按照注先選擇1號功能有: 圖6文本輸入 輸入完文字后退回到主菜單,然后選擇2號功能有: 圖7當(dāng)前文本輸岀 返回后回到主菜單,然后選擇3號功能進入文本內(nèi)容統(tǒng)計菜單有: 圖8文章內(nèi)容統(tǒng)計菜單 選擇1-6號功能有: 圖9 統(tǒng)計各功能顯示結(jié)果 如果選擇7回到主菜單,選擇8直接退岀程序。 回到主菜單后選擇4號功能有: 圖10文章內(nèi)容處理菜單 選擇1后有: 圖11文本查找結(jié)果 選擇2后有: 圖12文章刪除結(jié)果 選擇3后有: 圖13文章插入結(jié)

28、果 全部結(jié)束后按5回主菜單,按6直接退岀程序。 回主菜單后選擇 5有: 圖14關(guān)于界面 回主菜單選擇6后退岀本程序。 六程序完整代碼 #i ncludestdio.h #i ncludemalloc.h #in cludestr in g.h #i ncludeiostream.h #in cludestdlib.h #in cludeco ni o.h #defi ne Lin k_Size 100 int NUM,C,N; typedef struct list char data80; int len gth; struct list *n ext; struct list *pre;

29、in t row; Lin kList; Lin kList *head; void HeadWord() /system(cls); prin tf(tt* * *n); *n); prin tf(tt* * *n); prin tf(tt*歡迎使用簡單的文本編輯器 Lin kList *CreatWord() Lin kList *temp; char ch; int i,j; head-n ext=(L in kList *)malloc(sizeof(Li nkList); head-pre=NULL; temp=head-n ext; temp-pre=NULL; temp-le n

30、gth=O; for(i=0;idatai=0; printf(”開始創(chuàng)建文本,請輸入文章(輸入#號結(jié)束):n); for(j=0;jLi nk_Size;j+) for(i=0;idatai=ch; temp-le ngth+; if(ch=#) NUM=j; break; if(ch=#) temp-le ngth=i; temp-n ext=NULL; break; temp-n ext=(L in kList *)malloc(sizeof(Li nkList); temp-n ext-pre=temp; temp=temp-n ext; for(i=0;idatai=O; temp-

31、row=NUM+1; system(cls); return temp; void Pr in tWord() int i,j; Li nkList *p; p=head-n ext; system(cls); HeadWord(); printf(n當(dāng)前文章的內(nèi)容是:); for(j=0;j=NU Mj+) for(i=0;(idatai)匸 #;i+) prin tf(%c,p-datai); p=p-n ext; void Cou ntWord() Lin kList *temp; char ch; int i,j,t; int WORD=0,word=0,space=0,n um=0,

32、pu nct=0,sum=0; temp=head-n ext; for(j=0;j=NUM;j+) for(i=0;(idatai)匸 #;i+) ch=temp-datai; if(ch=A) strcpy(Data,str1); for(i=O;i=NUM;i+) for(j=0;jdataj)=Datak) k+; else if(Datak!=0) j=j-k; 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; con ti nue; temp=temp-n ext

33、; printf(ttt字符串總共岀現(xiàn)次數(shù)為:dnn,sum); C=sum; N=i*80+j; void DeleteWord(char *st char Data20; Lin kList *temp,*term; int i,j,k,m,y, num; strcpy(Data,str2); for(y=0;yC;y+) n um=80; k=0,m=0; temp=head; for(i=0;in ext; for(j=0;jdataj)=Datak) k+; else if(Datak!=0) j=j-k;k=0; if(Datak=O) n um=j; break; if(n um

34、80) break; for(;i=NUM;i+) for(;j80;j+) if(j+1data80-k+ num=temp-dataj+1; else temp-dataj-k+1=temp-dataj+1; term=temp; temp=temp-n ext; j=0; Lin kList * In sertWord(Li nkList *temp) char Data20; int h,l; printf(ntt請輸入要插入的字符或字符串:); getchar(); gets(Data); pri ntf(ntt當(dāng)前文章內(nèi)容為:); Prin tWord(); prin tf(ntt

35、請輸入要插入的行:); sca nf(%d, prin tf(ntt請輸入要插入的列:); sca nf(%d, int i=(h-1)*80+l; Lin kList *a; int n=strle n( Data); int m ; int in sertRow=i/80+1; int row=temp-row; int j; if(i nsertRow=row) for(m=temp-le ngth-1;m=(i%80)m-) temp-datam+n=temp-datam; for(m=(i%80),j=0;mdatam=Dataj; else int r=0; for( int p=

36、i nsertRow; ple ngth-1-r;m=0m-) temp-datam+n=temp-datam; a=temp; temp = temp-pre; temp-le ngth = 80; for(m = temp-le ngth-n,j=O;mle ngth;m+,j+) a-dataj=temp-datam; for(m=temp-le ngth-n-1;m=(i%80);m-) temp-datam+n=temp-datam; for(m=(i%80),j=0;mdatam =Dataj; return temp; void Bme nu(L in kList *temp)

37、char str120; char str220; int a; do HeadWord(); prin tf(ntt* n); prin tf(tt* 文章內(nèi)容處理菜單 *n); prin tf(tt*n); prin tf(tt*1、查找文章中的字符或者字符串 *n); prin tf(tt* 2、刪除文章中的字符或者字符串 *n); prin tf(tt*3、向文章中插入字符或者字符串 prin tf(tt*4、顯示當(dāng)前文章內(nèi)容 prin tf(tt*5、返回主菜單 prin tf(tt*6、直接退岀系統(tǒng) *n); *n); *n); *n); prin tf(tt* * *n); pr

38、intf(tt 請選擇:); sea nf(%d, switch(a) case 1: system(cls); HeadWord(); :); :); printf(ttt請輸入您需要查找的字符或字符串 getchar(); gets(str1); SearchWord(str1,temp); printf(“按回車鍵繼續(xù) ); getchar(); getchar(); system(cls); break; case 2: system(cls); HeadWord(); printf(ttt請輸入您需要刪除的字符或字符串 getchar(); gets(st ; SearchWord(

39、str2,temp); DeleteWord(str2); printf(ttt刪除 %s后的文章為:,st; Prin tWord(); printf(“按回車鍵繼續(xù) ); getchar(); getchar(); system(cls); break; case 3: system(cls); HeadWord(); In sertWord(temp); printf(ttt插入字符或字符串后文章為:); Prin tWord(); printf(“按回車鍵繼續(xù) ); getchar(); getchar(); system(cls); break; system(cls); case 4: HeadWord(); Pri

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論