




已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
此文檔收集于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系網(wǎng)站刪除學(xué) 號 成都理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)設(shè)計(jì)說明書題目文章編輯 集合運(yùn)算起止日期: 學(xué)生姓名班級成績指導(dǎo)教師(簽字) 計(jì)算機(jī)科學(xué)與技術(shù)系 目錄文章編輯2一、需求分析21.問題描述22.基本要求23.需求分析24.開發(fā)環(huán)境3二、概要設(shè)計(jì)31.流程圖32.結(jié)構(gòu)體構(gòu)造43.設(shè)計(jì)思想4三、詳細(xì)設(shè)計(jì)41.結(jié)構(gòu)體構(gòu)造42.函數(shù)構(gòu)造53.重點(diǎn)函數(shù)分析6四、調(diào)試與測試6五、執(zhí)行結(jié)果7六、源代碼8集合運(yùn)算18一、需求分析181.問題描述182.基本要求183.需求分析184.開發(fā)環(huán)境18二、概要設(shè)計(jì)191.流程圖192.結(jié)構(gòu)體構(gòu)造193.設(shè)計(jì)思想19三、詳細(xì)設(shè)計(jì)191.結(jié)構(gòu)體構(gòu)造192.函數(shù)構(gòu)造203.重點(diǎn)函數(shù)分析21四、調(diào)試與測試22五、關(guān)鍵源程序清單和執(zhí)行結(jié)果22六、源代碼23文章編輯一、 需求分析1. 問題描述輸入一頁文字,程序可以統(tǒng)計(jì)出文字、數(shù)字、空格的個(gè)數(shù)。2. 基本要求靜態(tài)存儲(chǔ)一頁文章,每行最多不超過80個(gè)字符,共N行,要求:(1)分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);(2)統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);(3)刪除某一子串,并將后面的字符前移。存儲(chǔ)結(jié)構(gòu)使用線性表,分別用幾個(gè)子函數(shù)實(shí)現(xiàn)相應(yīng)的功能。輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號。輸出形式:(1)分行輸出用戶輸入的各行字符;(2)分4行輸出全部字母數(shù)、數(shù)字個(gè)數(shù)、空格個(gè)數(shù)、文章總字?jǐn)?shù)(3)輸出刪除某一字符串后的文章;3. 需求分析(1)將文本轉(zhuǎn)換為鏈表儲(chǔ)存。(2)統(tǒng)計(jì)各個(gè)字符數(shù)量。(3)能夠?qū)⒃撴湵泶蛴〕鰜恚⑶覉?zhí)行刪除某一節(jié)點(diǎn)的操作。(4)查找并匹配字符串,并得到對應(yīng)的位置。4. 開發(fā)環(huán)境系統(tǒng)環(huán)境:Microsoft Windows10 專業(yè)版開發(fā)環(huán)境:Microsoft Visual Studio 2015開發(fā)平臺(tái):Win64開發(fā)語言:C+編譯器:Intel Parallel Studio XE 2013硬件環(huán)境:(1) CPU:Intel Core i7-4710MQ(2) 內(nèi)存:16GB(3) 顯示卡:NVIDIA GeForce GTX960M二、 概要設(shè)計(jì)1. 流程圖2. 結(jié)構(gòu)體構(gòu)造本程序采用的數(shù)據(jù)結(jié)構(gòu)是單鏈表形式,在每個(gè)節(jié)點(diǎn)中存儲(chǔ)一個(gè)字符,用指針的方式連接,形成鏈表,通過遍歷的方式來打印和搜尋所需的字符。3. 設(shè)計(jì)思想本程序旨在處理文字,重點(diǎn)即是先將文本轉(zhuǎn)化為鏈表存儲(chǔ),然后用對應(yīng)的函數(shù)遍歷鏈表,得出字符的數(shù)值。使用KMP算法查找對應(yīng)的字符串,并使用刪除節(jié)點(diǎn)的方式完成字符串的刪除操作。三、 詳細(xì)設(shè)計(jì)1. 結(jié)構(gòu)體構(gòu)造/ 構(gòu)造存儲(chǔ)字符的結(jié)構(gòu)體 typedef struct listNodechar word;struct listNode *next; wordList, *list;/ 構(gòu)造儲(chǔ)存字符數(shù)量的結(jié)構(gòu)體typedef struct int alpha;int digit;int blank;int sum; numStruct, *numNode;/ 構(gòu)造儲(chǔ)存字符位置的結(jié)構(gòu)體typedef struct posNodeint pos;struct posNode *next; posStruct, *posList;2. 函數(shù)構(gòu)造/ 線性鏈表初始化函數(shù):鏈表頭指針int wordList_init( list *res);/ 存儲(chǔ)結(jié)構(gòu)初始化函數(shù):結(jié)構(gòu)指針int numNode_init( numNode *num);/ 字符位置鏈表初始化函數(shù):結(jié)構(gòu)指針int posNode_init( posList *posP);/ 字符位置鏈表增加與儲(chǔ)存函數(shù):頭指針,插入字符int posNode_add( posList *posP, int posNum);/ 鏈表增加與儲(chǔ)存函數(shù):頭指針,插入字符int wordList_add( list *res, char letter);/ 文本轉(zhuǎn)換鏈表函數(shù),同時(shí)計(jì)算文本中的字符類別和數(shù)量:鏈表頭指針,結(jié)構(gòu)體指針int text_transform( list *res, numNode *num);/ 刪除鏈表的某一節(jié)點(diǎn):該節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)的指針int wordList_delete( list *now);/ 鏈表打?。侯^指針void wordList_print( list *res);/ 計(jì)算next數(shù)組的值:void nextArray_make( char strFind, int next);/ KMP算法:int KMP( char strRes, char strFind, int next);/ KMP統(tǒng)計(jì)出現(xiàn)次數(shù)int stringRepeat_count( char strRes, char strFind, posList *posL);/ 字符串查詢:鏈表頭指針,結(jié)構(gòu)void string_search( list *res, numNode *num);/ 字符串刪除函數(shù):鏈表頭指針,結(jié)構(gòu)void string_delete( list *res, numNode *num);/ 菜單函數(shù)void menu();3. 重點(diǎn)函數(shù)分析在這個(gè)程序當(dāng)中,個(gè)人認(rèn)為最重要的部分就是KMP算法的實(shí)現(xiàn),這個(gè)算法的搜索速度極其快速,但是因?yàn)椴惶菀桌斫?,所以?shí)現(xiàn)上有些困難。KMP算法相對于普通的搜索算法,最大的優(yōu)勢就是使用了一個(gè)next數(shù)組來幫助算法程序跳轉(zhuǎn),通過減少比對時(shí)間來優(yōu)化效率。這個(gè)算法的核心也就是是next數(shù)組的求法。Next數(shù)組保證每一次比對完成以后向后跳轉(zhuǎn)的具體位置。而KMP算法的核心即是計(jì)算字符串string,每一個(gè)位置之前的字符串的前面部分和后部分的公共部分的最大長度(不包括字符串本身,否則最大長度始終是字符串本身)。這樣構(gòu)造的算法可以在最大程度上向后跳轉(zhuǎn)節(jié)約時(shí)間。四、 調(diào)試與測試在調(diào)試本程序時(shí),為了保證輸入輸出的值的正確,基本思路是在每個(gè)函數(shù)寫好以后對該函數(shù)的效果進(jìn)行測試,保證該函數(shù)能正常運(yùn)行并得出對應(yīng)正確的結(jié)果,并且對可能會(huì)影響到的指針的值進(jìn)行處理,保證程序的健壯性。如果程序出現(xiàn)了致命的錯(cuò)誤,我就會(huì)打開斷點(diǎn)調(diào)試功能篩查是哪個(gè)地方出了問題,然后進(jìn)行修改。五、 執(zhí)行結(jié)果本程序所需要的文章以文本形式放在程序同目錄下的input_text.txt內(nèi)。打開程序時(shí)會(huì)自動(dòng)加載轉(zhuǎn)換本文本,并且不會(huì)對原文本進(jìn)行更改。以下是演示圖片。六、 源代碼#include #include #include / 構(gòu)造存儲(chǔ)字符的結(jié)構(gòu)體 typedef struct listNodechar word;struct listNode *next; wordList, *list;/ 構(gòu)造儲(chǔ)存字符數(shù)量的結(jié)構(gòu)體typedef struct int alpha;int digit;int blank;int sum; numStruct, *numNode;/ 構(gòu)造儲(chǔ)存字符位置的結(jié)構(gòu)體typedef struct posNodeint pos;struct posNode *next; posStruct, *posList;/ 線性鏈表初始化函數(shù):鏈表頭指針int wordList_init( list *res);/ 存儲(chǔ)結(jié)構(gòu)初始化函數(shù):結(jié)構(gòu)指針int numNode_init( numNode *num);/ 字符位置鏈表初始化函數(shù):結(jié)構(gòu)指針int posNode_init( posList *posP);/ 字符位置鏈表增加與儲(chǔ)存函數(shù):頭指針,插入字符int posNode_add( posList *posP, int posNum);/ 鏈表增加與儲(chǔ)存函數(shù):頭指針,插入字符int wordList_add( list *res, char letter);/ 文本轉(zhuǎn)換鏈表函數(shù),同時(shí)計(jì)算文本中的字符類別和數(shù)量:鏈表頭指針,結(jié)構(gòu)體指針int text_transform( list *res, numNode *num);/ 刪除鏈表的某一節(jié)點(diǎn):該節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)的指針int wordList_delete( list *now);/ 鏈表打?。侯^指針void wordList_print( list *res);/ 計(jì)算next數(shù)組的值:void nextArray_make( char strFind, int next);/ KMP算法:int KMP( char strRes, char strFind, int next);/ KMP統(tǒng)計(jì)出現(xiàn)次數(shù)int stringRepeat_count( char strRes, char strFind, posList *posL);/ 字符串查詢:鏈表頭指針,結(jié)構(gòu)void string_search( list *res, numNode *num);/ 字符串刪除函數(shù):鏈表頭指針,結(jié)構(gòu)void string_delete( list *res, numNode *num);/ 菜單函數(shù)void menu();/ 主函數(shù)int main (void)menu();return 0;/ 線性鏈表初始化函數(shù):鏈表頭指針int wordList_init( list *res)(*res) = (list)malloc(sizeof(wordList);if( (*res) )(*res)-next = NULL;(*res)-word = ;return 1;elseprintf(空間分配失敗,請重試。n);return 0;/ 存儲(chǔ)結(jié)構(gòu)初始化函數(shù):結(jié)構(gòu)指針int numNode_init( numNode *num)(*num) = (numNode)malloc(sizeof(numStruct);if( (*num) )(*num)-alpha = 0;(*num)-digit = 0;(*num)-blank = 0;(*num)-sum = 0;return 1;elseprintf(空間分配失敗,請重試。n);return 0;/ 字符位置鏈表初始化函數(shù):結(jié)構(gòu)指針int posNode_init( posList *posP)(*posP) = (posList)malloc(sizeof(posStruct);if (*posP)(*posP)-next = NULL;(*posP)-pos = 0;elsereturn 0;/ 字符位置鏈表增加與儲(chǔ)存函數(shù):頭指針,插入字符int posNode_add( posList *posP, int posNum)while (*posP)-next)(*posP) = (*posP)-next;/ 分配空間(*posP)-next = (posList)malloc(sizeof(posStruct);if (*posP)-next)(*posP) = (*posP)-next;(*posP)-next = NULL;(*posP)-pos = posNum;return 1;elseprintf(空間分配失敗,請重試。n);return 0;/ 鏈表增加與儲(chǔ)存函數(shù):頭指針,插入字符int wordList_add( list *res, char letter)while (*res)-next)(*res) = (*res)-next;/ 分配空間(*res)-next = (list)malloc(sizeof(wordList);if (*res)-next)(*res) = (*res)-next;(*res)-next = NULL;(*res)-word = letter;return 1;elseprintf(空間分配失敗,請重試。n);return 0;/ 文本轉(zhuǎn)換鏈表函數(shù),同時(shí)計(jì)算文本中的字符類別和數(shù)量:鏈表頭指針,結(jié)構(gòu)體指針int text_transform( list *res, numNode *num)/ 文件操作,打開文件FILE *fp;fp = fopen( input_text.txt, r);char letter;/ 初始化鏈表wordList_init( &(*res);numNode_init( &(*num);/ 重新聲明變量,操作resNow來構(gòu)建鏈表list resNow = (*res);/ 循環(huán)將文本讀入線性表中while( (letter = getc(fp) != EOF)wordList_add( &resNow, letter);if( isalpha( letter) )(*num)-alpha+; /求字母數(shù)else if( isdigit( letter)(*num)-digit+; /求數(shù)字個(gè)數(shù)else if( letter = )(*num)-blank+; /求空格數(shù)(*num)-sum+;/ 關(guān)閉文件fclose(fp);/ 刪除鏈表的某一節(jié)點(diǎn):該節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)的指針int wordList_delete( list *now)list temp = (*now)-next;(*now)-next = temp-next;free(temp);return 1;/ 鏈表打?。侯^指針void wordList_print( list *res)list temp = (*res);while( temp-next )temp = temp-next;printf(%c,temp-word);/ 計(jì)算next數(shù)組的值:void nextArray_make( char strFind, int next)int i,j;int len = strlen(strFind); next0 = -1;/next0放上-1 i = 0;/指向字符串每個(gè)字符的指針 j = -1; while( i len )/沒有到達(dá)結(jié)尾的話 if( j = -1 | strFindi = strFindj)/如果是第一個(gè)字符或遇到相同的字符 i+;j+;nexti = j; else j = nextj; / for( i = 0; i len; i+)/輸出next值 / printf(%d,nexti); / / KMP算法:int KMP( char strRes, char strFind, int next) int i, j; i = j = 0;int lenRes = strlen(strRes);int lenFind = strlen(strFind); while( i lenRes & j lenFind )int nextlenTemp;nextArray_make( strFind, next);int pos = KMP( strTemp, strFind, next);if(pos = -1)break;elsestrTemp = &(strTemppos+lenFind);lenTemp = strlen(strTemp);repeatCount+;posCount += (pos + lenFind);printf(n第 %d 在第 %d 個(gè)位置出現(xiàn)。n, repeatCount, posCount);posNode_add( &tempPOS, posCount);return repeatCount;/ 字符串查詢:鏈表頭指針,結(jié)構(gòu)void string_search( list *res, numNode *num)printf(n請輸入您想要查找的字符串:n);/ 獲得最大長度為文本文件大小的字符串?dāng)?shù)組char strFind(*num)-sum;scanf(%s,&strFind);/ 將鏈表轉(zhuǎn)換為數(shù)組處理char strRes(*num)-sum;list temp = (*res);int i = 0;while( temp-next )temp = temp-next;strResi = temp-word;i+;posList pos;posNode_init( &pos);int repeatCount = stringRepeat_count( strRes, strFind, &pos);if ( repeatCount)printf(n該字符串“ %s ”在本文本中出現(xiàn)了 %d 次。, strFind, repeatCount);else printf(沒有搜索到該文本。);/ 字符串刪除函數(shù):鏈表頭指針,結(jié)構(gòu)void string_delete( list *res, numNode *num)printf(n請輸入您想要?jiǎng)h除的字符串:n);/ 獲得最大長度為文本文件大小的字符串?dāng)?shù)組char strFind(*num)-sum;scanf(%s,&strFind);/ 將鏈表轉(zhuǎn)換為數(shù)組處理char strRes(*num)-sum;list temp = (*res);int i = 0;while( temp-next )temp = temp-next;strResi = temp-word;i+;posList pos;posNode_init( &pos);int repeatCount = stringRepeat_count( strRes, strFind, &pos);if ( !repeatCount)printf(沒有搜索到該文本。);return;printf(n該字符串“ %s ”在本文本中出現(xiàn)了 %d 次。n, strFind, repeatCount);printf(n您確認(rèn)刪除這個(gè)字符串嗎?nn回復(fù)數(shù)字 1 來確認(rèn)此操作。n);i = 0;scanf(%d,&i);if ( i = 1)int count = 0;list temp = (*res);pos = pos-next;while( temp-next & pos)int lenDelete = strlen(strFind);count+;if ( count = pos-pos)count += lenDelete;while ( lenDelete)wordList_delete( &temp);lenDelete-;pos = pos-next;temp = temp-next;printf(nn刪除成功,現(xiàn)文本如下:nn);wordList_print( &(*res);return;/ 菜單函數(shù)void menu()/ 聲明鏈表頭指針list res;/ 聲明數(shù)量結(jié)構(gòu)體numNode num;/ 將文本轉(zhuǎn)換為鏈表保存并統(tǒng)計(jì)字符數(shù)量text_transform( &res, &num);int funChoose;while (1)printf(n請輸入序號來選擇您需要的功能:nn);printf(1.顯示文本nn2.顯示字符統(tǒng)計(jì)情況。nn3.查詢字符串nn4.刪除字符串nn);scanf(%d, &funChoose);system(cls);if ( funChoose = 1)wordList_print( &res); else if ( funChoose = 2)printf(n字母數(shù):%dnn數(shù)字?jǐn)?shù):%dnn空格數(shù):%dnn字符總數(shù):%dn, num-alpha, num-digit, num-blank, num-sum); else if ( funChoose = 3)string_search( &res, &num); else if ( funChoose = 4)string_delete( &res, &num);elseprintf(n請輸入正確的選擇數(shù)字。);printf(nnn);system(pause);system(cls);集合運(yùn)算一、 需求分析1. 問題描述使用鏈表來表示集合,完成集合的合并,求交集等操作。2. 基本要求(1)用鏈表表示兩個(gè)集合(2)對兩個(gè)集合分別從小到大排序(3)兩個(gè)集合合并成另一個(gè)新集合,如數(shù)值相同,合并為一個(gè)數(shù)據(jù)項(xiàng)(4)求出兩個(gè)集合的交集建立一個(gè)新的集合。3. 需求分析(1)將該集合轉(zhuǎn)換為鏈表儲(chǔ)存。(2)分別對兩個(gè)集合進(jìn)行排序操作。(3)合并兩個(gè)集合,排序并合并相同數(shù)據(jù)項(xiàng)。(4)打印出交集。4. 開發(fā)環(huán)境系統(tǒng)環(huán)境:Microsoft Windows10 專業(yè)版開發(fā)環(huán)境:Microsoft Visual Studio 2015開發(fā)平臺(tái):Win64開發(fā)語言:C+編譯器:Intel Parallel Studio XE 2013硬件環(huán)境:(1) CPU:Intel Core i7-4710MQ(2) 內(nèi)存:16GB(3) 顯示卡:NVIDIA GeForce GTX960M二、 概要設(shè)計(jì)1. 流程圖2. 結(jié)構(gòu)體構(gòu)造本程序采用的數(shù)據(jù)結(jié)構(gòu)是單鏈表形式,在每個(gè)節(jié)點(diǎn)中存儲(chǔ)集合中的一個(gè)元素,用指針的方式連接,形成鏈表,通過遍歷的方式來排序和打印元素。3. 設(shè)計(jì)思想本程序旨在集合運(yùn)算,所以一開始便構(gòu)造兩個(gè)鏈表分別存儲(chǔ)兩個(gè)集合,并進(jìn)行分別排序。最后使用總處理函數(shù)得到交集和并集,具體設(shè)計(jì)在第三節(jié)的重點(diǎn)函數(shù)分析中。三、 詳細(xì)設(shè)計(jì)1. 結(jié)構(gòu)體構(gòu)造/ 構(gòu)造結(jié)構(gòu)體儲(chǔ)存數(shù)據(jù)typedef struct nodeint num; struct node *next; groupList, *list;2. 函數(shù)構(gòu)造/ 鏈表初始化函數(shù):鏈表頭指針int group_init( list *res);/ 鏈表增加函數(shù):鏈表頭指針,值int group_add( list *res, int num);/ 刪除該節(jié)點(diǎn)的下個(gè)節(jié)點(diǎn):頭指針void group_delete( list *res);/ 鏈表打印函數(shù):頭指針void group_print( list *res);/ 獲取集合:頭指針,集合元素總數(shù)void group_get( list *res, int numSum);/ 鏈表的冒泡排序:頭指針void group_BubbleSort( list *res);/ 鏈表的總處理:四個(gè)頭指針/ 在這個(gè)函數(shù)中調(diào)用了冒泡排序函數(shù)和刪除節(jié)點(diǎn)函數(shù)void group_process( list *groupA, list *groupB, list *groupUnion, list *groupInter);/ 菜單函數(shù)void menu ();3. 重點(diǎn)函數(shù)分析本程序的重點(diǎn)在于鏈表的總處理函數(shù),在此附上代碼和說明。因?yàn)楸境绦蜉^為簡單,所以沒有特意重新構(gòu)造一個(gè)鏈表來分別保存并集和交集。這個(gè)函數(shù)的基本思路是講這兩個(gè)鏈表合在一起進(jìn)行排序,然后遍歷這個(gè)總鏈表。當(dāng)遍歷到兩次出現(xiàn)同一個(gè)值時(shí),證明這個(gè)值在兩個(gè)鏈表中均出現(xiàn)過。則將其放到新構(gòu)造的交集鏈表中。而當(dāng)出現(xiàn)了三次時(shí),則刪除。由此得到的遍歷后的鏈表即為并集的集合。/ 鏈表的總處理:四個(gè)頭指針void group_process( list *groupA, list *groupB, list *groupUnion, list *groupInter) list a, b, c, temp; c = (*groupInter); / 將AB鏈表合在一起 temp = (*groupA); while (temp-next) temp = temp-next; temp-next = (*groupB)-next; temp = (*groupA); / 排序總鏈表 group_BubbleSort( &temp); / 總鏈表中的重復(fù)數(shù)據(jù)計(jì)入交集鏈表中 while (temp-next) b = temp; temp = temp-next; if (a = temp-next) if ( a-num = temp-num ) if ( !(*groupInter)-next ) group_add( &c, a-num); if ( a-num != c-num) group_add( &c, a-num); / 刪除重復(fù)數(shù)據(jù) group_delete(&temp); temp = b; / 剩下的即是合集 (*groupUnion) = (*groupA);四、 調(diào)試與測試在調(diào)試本程序時(shí),為了保證輸入輸出的值的正確,基本思路是在每個(gè)函數(shù)寫好以后對該函數(shù)的效果進(jìn)行測試,保證該函數(shù)能正常運(yùn)行并得出對應(yīng)正確的結(jié)果,并且對可能會(huì)影響到的指針的值進(jìn)行處理,保證程序的健壯性。如果程序出現(xiàn)了致命的錯(cuò)誤,我就會(huì)打開斷點(diǎn)調(diào)試功能篩查是哪個(gè)地方出了問題,然后進(jìn)行修改。五、 關(guān)鍵源程序清單和執(zhí)行結(jié)果六、 源代碼#include #include / 構(gòu)造結(jié)構(gòu)體儲(chǔ)存數(shù)據(jù)typedef struct nodeint num; struct node *next; groupList, *list;/ 鏈表初始化函數(shù):鏈表頭指針int group_init( list *res);/ 鏈表增加函數(shù):鏈表頭指針,值int group_add( list *res, int num);/ 刪除該節(jié)點(diǎn)的下個(gè)節(jié)點(diǎn):頭指針void group_delete( list *res);/ 鏈表打印函數(shù):頭指針void group_print( list *res);/ 獲取集合:頭指針,集合元素總數(shù)void group_get( list *res, int numSum);/ 鏈表的冒泡排序:頭指針void group_BubbleSort( list *res);/ 鏈表的總處理:四個(gè)頭指針void group_process( list *groupA, list *groupB, list *groupUnion, list *groupInter);/ 菜單函數(shù)void menu ();int main (void)menu(); return 0;/ 鏈表初始化函數(shù):鏈表頭指針int group_init( list *res) / 分配空間 (*res) = (list)malloc(sizeof(groupList); if (*res) (*res)-next = NULL; (*res)-num = 0; return 1; else return 0; / 鏈表增加函數(shù):鏈表頭指針,值int group_add( list *res, int num) / 判斷當(dāng)前指針是否指向最后一個(gè)節(jié)點(diǎn) while(*res)-next) (*res) = (*res)-next; printf(指針有誤。); / 分配空間 (*res)-next = (list)malloc(sizeof(groupList); if (*res)-next) (*res) = (*res)-next; (*res)-next = NULL; (*res)-num = num; return 1; else return 0; / 刪除該節(jié)點(diǎn)的下個(gè)節(jié)點(diǎn):頭指針void group_delete( list *res) list temp = (*res)-next; if (temp-next) (*res)-next = temp-next; free(temp); / 鏈表打印函數(shù):頭指針void group_print( list *res) / 循環(huán)打印項(xiàng) list temp = (*res); while ( temp-next ) temp = temp-next; printf(%d , temp-num); / 獲取集合:頭指針,集合元素總數(shù)void group_get( list *res, int numSum) int i = 1; list temp = (*res); int tempNum; while ( inext;n = (*res)-next;for ( m = (*res)-next; m; m = m-next ) for ( n = m-next; n; n = n-next ) if ( (m-num) (n-num) ) int temp = m-num;m-num = n-num;n-num = temp; / 鏈表的總處理:四個(gè)頭指針void group_process( list *groupA, list *groupB, list *groupUnion, list *groupInter) list a, b, c, temp; c = (*groupInter); / 將AB鏈表合在一起 temp = (*groupA); while (temp-next) temp = temp-next; temp-next = (*groupB)-next; temp = (*groupA); / 排序總鏈表 group_BubbleSort( &temp); / 總鏈表中的重復(fù)數(shù)據(jù)計(jì)入交集鏈表中 while (temp-next) b = temp; temp = temp-next; if (a = temp-next) if ( a-num =
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中教務(wù)主任培訓(xùn)論壇展示
- 腹部外科護(hù)理小講課
- 護(hù)理學(xué)專業(yè)教師的職責(zé)道德
- 測井體積模型與阿爾奇公式
- 營地教育課程體系構(gòu)建
- 河南對外經(jīng)濟(jì)貿(mào)易職業(yè)學(xué)院《舞蹈基礎(chǔ)1》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州財(cái)經(jīng)學(xué)院《文獻(xiàn)檢索與寫作》2023-2024學(xué)年第一學(xué)期期末試卷
- 河南測繪職業(yè)學(xué)院《足球主項(xiàng)實(shí)踐教學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 天津美術(shù)學(xué)院《廣播電視節(jié)目策劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 住房廚衛(wèi)煙氣排放系統(tǒng)施工后的質(zhì)量檢測與驗(yàn)收標(biāo)準(zhǔn)
- 2025年 中國南水北調(diào)集團(tuán)新能源投資公司第一批中層及考試筆試試卷附答案
- 期末試卷(五)(含答案含聽力原文無聽力音頻)-2024-2025學(xué)年人教PEP版英語(新教材)三年級下冊
- 湖南2024生地會(huì)考試卷及答案
- 廣東省深圳市2024年中考英語真題(含答案)
- 敘事護(hù)理學(xué)智慧樹知到答案2024年中國人民解放軍海軍軍醫(yī)大學(xué)
- 六年級主題班隊(duì)會(huì)記錄表(6個(gè)表)
- 石家莊橋東污水處理廠三溝式氧化溝工藝設(shè)計(jì)
- 部編版六年級語文下冊詞語表(看拼音寫詞語)
- (完整版)煤礦主扇司機(jī)考試卷(含答案)
- 血液制品發(fā)展制約因素分析:基礎(chǔ)薄弱起步晚
- 設(shè)計(jì)加熱爐推料機(jī)傳動(dòng)裝置
評論
0/150
提交評論