歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > DOCX文檔下載  

大數(shù)據(jù)結(jié)構(gòu) 將一個(gè)鏈表拆分成三個(gè)鏈表

  • 資源ID:137880293       資源大?。?span id="as6pnf1" class="font-tahoma">81.03KB        全文頁(yè)數(shù):8頁(yè)
  • 資源格式: DOCX        下載積分:15積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

大數(shù)據(jù)結(jié)構(gòu) 將一個(gè)鏈表拆分成三個(gè)鏈表

數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)題目:將一個(gè)鏈表拆分成三個(gè)鏈表。實(shí)驗(yàn)?zāi)康模?、掌握使用Visual C+6.0上機(jī)調(diào)試程序的基本方法;2、掌握鏈表結(jié)構(gòu)中的基本操作并學(xué)會(huì)靈活運(yùn)用;3、提高自己分析問題和解決問題的能力,在實(shí)踐中理解教材上的理論。實(shí)驗(yàn)內(nèi)容:建立鏈表并存儲(chǔ)輸入的數(shù)據(jù),根據(jù)各節(jié)點(diǎn)數(shù)據(jù)的類型,建立三個(gè)鏈表并將不 同類型的數(shù)據(jù)分別輸出。、需求分析1、輸入的形式和輸入值的范圍:根據(jù)提示,輸入鏈表中的各數(shù)據(jù),輸入回車結(jié)束輸入,所 輸入的數(shù)據(jù)元素為字符類型。2、輸出的形式:根據(jù)輸入的字符串中數(shù)據(jù)的類型(字母、數(shù)字和其它),分類輸出。3、程序所能達(dá)到的功能:根據(jù)提示輸入數(shù)據(jù),然后根據(jù)數(shù)據(jù)元素類型的不同,將其分別輸 出,輸出結(jié)束后提示是否結(jié)束,根據(jù)需要繼續(xù)操作。由此可以實(shí)現(xiàn)實(shí)驗(yàn)內(nèi)容中的要求。4、測(cè)試數(shù)據(jù):輸入鏈表中的各元素:*?9Li(0)02 11字母:Li數(shù)字:900211其它:*?() 是否結(jié)束?是,輸入0;否,輸入10謝謝使用,再見!二概要設(shè)計(jì)本程序使用單鏈表表示的線性表,建立鏈表并存儲(chǔ)數(shù)據(jù),拆分后的三個(gè)鏈表都用帶頭結(jié) 點(diǎn)的單鏈表存放,先建立三個(gè)頭結(jié)點(diǎn),用一指針掃描待拆分的鏈表,然后根據(jù)各結(jié)點(diǎn)的數(shù)據(jù) 的類型不同將其分別插入三個(gè)新鏈表中,由此實(shí)現(xiàn)了對(duì)鏈表的拆分,最后將鏈表中的數(shù)據(jù)輸 出即可實(shí)現(xiàn)題目要求。本程序的基本操作和模塊: 主程序模塊main ()對(duì)輸入的操作進(jìn)行提示,調(diào)用其它的各個(gè)函數(shù); 建立鏈表并輸入數(shù)據(jù)模塊Create(LinkList *&L) 輸出鏈表中的數(shù)據(jù)模塊Printf(LinkList *L) 將原鏈表拆分成三個(gè)鏈表的模塊:Fun(LinkList *hd,LinkList *ha,LinkList *hb,LinkList *hc)程序流程如下所示三詳細(xì)設(shè)計(jì)(一)元素類型、結(jié)點(diǎn)類型和指針類型typedef struct LNode(char data;struct LNode *next;LinkList;(二)每個(gè)模塊的分析1、主程序模塊分析main()int (LinkList *hd,*ha,*hb,*hc;定義四個(gè)頭結(jié)點(diǎn)指針,*hd代表待拆分鏈表, 其它類型的鏈表 ha=(LinkList hb=(LinkList hc=(LinkList int i;*ha,*hb和*hc分別代表字母,數(shù)字止本char m;*)malloc(sizeof(LinkList);*)malloc(sizeof(LinkList);*)malloc(sizeof(LinkList);/創(chuàng)建ha頭結(jié)點(diǎn)/創(chuàng)建hb頭結(jié)點(diǎn)/創(chuàng)建hc頭結(jié)點(diǎn)/定義整型數(shù)據(jù)i,用于判斷是否終程序的運(yùn)行定義字符型數(shù)據(jù)m,存放輸入i的值之 的回車while(1)(Create(hd);/調(diào)用建立單鏈表并輸入數(shù)據(jù)的函數(shù)Fun(hd,ha,hb,hc);/調(diào)用拆分鏈表的函數(shù)printf("n字母:");/提示輸出的鏈表中數(shù)據(jù)為字母類型Printf(ha);調(diào)用輸出鏈表元素的函數(shù),輸出ha鏈表中的數(shù)據(jù)(字母類型) printf (-n數(shù)字:");/提示輸出的鏈表中數(shù)據(jù)為數(shù)字類型Printf(hb);調(diào)用輸出鏈表元素的函數(shù),輸出hb鏈表中的數(shù)據(jù)(數(shù)字類型) printf (-n其它:");/提示輸出的鏈表中數(shù)據(jù)為其它類型Printf(hc);調(diào)用輸出鏈表元素的函數(shù),輸出hc鏈表中的數(shù)據(jù)(其它類型) printf("n"); printf(-n是否結(jié)束?是,輸入0;否,輸入1n"); /提示是否終止本程序的 運(yùn)行 scanf("%d",&i);/輸入整數(shù) iprintf("n"); if(i=1) scanf("%c",&m);/存放輸入i的值之后的回車 if(i=0) break;當(dāng)i為0時(shí),結(jié)束循環(huán),結(jié)束運(yùn)行 printf("謝謝使用,再見! nn");return 0;2、建立鏈表和輸入數(shù)據(jù)模塊分析void Create(LinkList *&L)LinkList *s,*r;L=(LinkList *)malloc(sizeof(LinkList); /創(chuàng)建頭結(jié)點(diǎn)L->next=NULL;/r始終指向終端結(jié)點(diǎn),開始時(shí)指向用于提示字符串的輸入r=L;頭結(jié)點(diǎn)printf("輸入鏈表中的各元素:n");while(1) s=(LinkList *)malloc(sizeof(LinkList); /創(chuàng)建新結(jié)點(diǎn)scanf("%c",&s->data);/輸入新節(jié)點(diǎn)的數(shù)據(jù)r->next=s;r=s;if(s->data='n') break;結(jié)束r->next=NULL;/將*,插入*r之后若輸入回車,則字符串的輸入終端結(jié)點(diǎn)next域置NULL3、輸出鏈表元素模塊分析void Printf(LinkList *L)(LinkList *p=L->next; while (p!=NULL) ( printf("%c",p->data);/當(dāng)指針p所指結(jié)點(diǎn)next域不為NULL時(shí),將該結(jié)點(diǎn)的數(shù)據(jù)輸出p=p->next;/p指針向后移動(dòng) 4、拆分鏈表模塊分析void Fun(LinkList *hd,LinkList *ha,LinkList *hb,LinkList *hc)/ra始終指向ha的末尾結(jié)點(diǎn)/ra始終指向ha的末尾結(jié)點(diǎn)/ra始終指向ha的末尾結(jié)點(diǎn)/當(dāng)指針p所指結(jié)點(diǎn)的指針域不為NULL時(shí),執(zhí)行以下循環(huán)過程LinkList *p=hd->next,*ra,*rb,*rc;/定義三個(gè)指向鏈表結(jié)點(diǎn)的指針 ra=ha;rb=hb;rc=hc;while(p!=NULL)if(p->data>='A'&&p->data<='Z'|p->data>='a'&&p->data<='z')若數(shù)據(jù)為字母型ra->next=p;ra=p;/將*?鏈接到ha單鏈表末尾p=p->next; /p 指針后移 elseif(p->data>='0'&&p->data<='9') /如果數(shù)據(jù)為數(shù)字類型 rb->next=p;rb=p;p=p->next;elserc->next=p;rc=p;p=p->next;/將*?鏈接到ha單鏈表末尾/p指針后移數(shù)據(jù)為其它類型的情況/將*?鏈接到ha單鏈表末尾/p指針后移ra->next=NULL;rb->next=NULL;rc->next=NULL;/將三個(gè)新鏈表尾結(jié)點(diǎn)next域置空四使用說明、測(cè)試分析及結(jié)果1、程序使用說明:(1) 本程序運(yùn)行環(huán)境為Visual C+ 6.0;(2) 根據(jù)界面提示進(jìn)行操作,每次從鍵盤輸入數(shù)據(jù)后按回車結(jié)束。2、測(cè)試結(jié)果與分析:根據(jù)提示,當(dāng)輸入為*?9Li(0)02 11時(shí),輸出結(jié)果如下所示字母:Li數(shù)字:900211其它:*?() 是否結(jié)束?是,輸入0;否,輸入10謝謝使用,再見!3、調(diào)試過程中遇到的問題及解決方法 當(dāng)代碼編寫完成后,編譯過程出現(xiàn)了很多小錯(cuò)誤,比如語句末尾漏掉分號(hào),賦值運(yùn)算符與 等號(hào)混淆等,但這些問題很快發(fā)現(xiàn)并及時(shí)糾正; 另外,在運(yùn)行時(shí)出現(xiàn)可以輸入字符串但卻無法正常輸出結(jié)果的現(xiàn)象,在進(jìn)一步分析所編寫 的代碼后,發(fā)現(xiàn)函數(shù)調(diào)用過程不對(duì),在參考程序設(shè)計(jì)教材后,解決了這一問題。4、運(yùn)行界面五、實(shí)驗(yàn)總結(jié)本次實(shí)驗(yàn),我進(jìn)行了預(yù)習(xí),但是預(yù)習(xí)過程不夠認(rèn)真,忽略了很多細(xì)節(jié),以致于我用了大 約一個(gè)小時(shí)的時(shí)間編寫完代碼,但是對(duì)代碼的修改卻花費(fèi)了大量時(shí)間,沒有當(dāng)堂完成。課后, 我參考了C程序設(shè)計(jì)的教材并很快發(fā)現(xiàn)自己的問題,又花費(fèi)了半個(gè)小時(shí),才最終修改正確。在最開始編寫程序時(shí),因?yàn)殚L(zhǎng)時(shí)間沒有應(yīng)用C語言,所以部分基本知識(shí)有些生疏,以致 于發(fā)生了很多低級(jí)的錯(cuò)誤,比如忽略了字符型數(shù)據(jù)和整型數(shù)據(jù)的區(qū)別,在輸入字符串時(shí)以空 格分隔各其它字符,導(dǎo)致得不到輸出結(jié)果,不過這些錯(cuò)誤很快糾正。另外,在最初的程序中,通過輸入字符串中字符的個(gè)數(shù)然后再輸入字符串,最后輸出結(jié) 果,因?yàn)橐斎胱址凶址膫€(gè)數(shù),所以當(dāng)字符串較長(zhǎng)時(shí)操作起來不方便。所以我對(duì)其進(jìn) 行了修改,在函數(shù)中判斷是否有回車的輸入,以回車直接結(jié)束字符串的輸入,不必再輸入字 符個(gè)數(shù),從而操作起來更加方便。我還在主函數(shù)中添加了一個(gè)循環(huán),以輸入0或1判斷是否繼續(xù)程序的運(yùn)行,使之 更加人性化,但是在此也遇到一個(gè)問題。當(dāng)輸入1時(shí),表示不結(jié)束,但是輸入1之后 以回車表示輸入的結(jié)束,因?yàn)榛剀嚤硎咀址斎氲慕Y(jié)束,所以導(dǎo)致之后的操作不能正常進(jìn) 行,為解決這一問題,我在主函數(shù)中重新定義了一個(gè)字符型數(shù)據(jù),以吸收回車。最終程序得 以正常運(yùn)行。本次實(shí)驗(yàn),我很感謝老師和同學(xué)對(duì)我的指點(diǎn)。通過本次實(shí)驗(yàn),對(duì)鏈表結(jié)構(gòu)有了更深層次 的認(rèn)識(shí),對(duì)一些細(xì)節(jié)更加理解,收獲了很多。教師評(píng)語:實(shí)驗(yàn)成績(jī):指導(dǎo)教師簽名:批閱日期:代碼:# include<stdio.h># include<malloc.h>/* 定義單鏈表結(jié)點(diǎn)類型 */typedef struct LNodechar data;/每個(gè)結(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù)為字符型struct LNode *next;/指向后繼結(jié)點(diǎn)LinkList;/*建立單鏈表并輸入數(shù)據(jù)的函數(shù)*/void Create(LinkList *&L)LinkList *s,*r;L=(LinkList *)malloc(sizeof(LinkList);/創(chuàng)建頭結(jié)點(diǎn)L->next=NULL;頭結(jié)點(diǎn)的next域置空r=L;/r始終指向終端結(jié)點(diǎn),開始時(shí)指向頭結(jié)點(diǎn)printf(-輸入鏈表中的各元素:n");/用于提示字符串的輸入while(1)s=(LinkList *)malloc(sizeof(LinkList);/創(chuàng)建新結(jié)點(diǎn)scanf("%c”,&s->data);/輸入新節(jié)點(diǎn)的數(shù)據(jù)r->next=s;將*s插入*匕之后r=s;if(s->data='n') break;/若輸入回車,則字符串的輸入結(jié)束r->next=NULL;終端結(jié)點(diǎn) next 域置 NULL/*輸出鏈表中的所有元素的函數(shù)*/void Printf(LinkList *L) LinkList *p=L->next;while (p!=NULL)printf("%c",p->data); /當(dāng)指針p所指結(jié)點(diǎn)next域不為NULL時(shí),將該結(jié)點(diǎn)的數(shù)據(jù)輸出 p=p->next;/p指針向后移動(dòng)/*拆 分鏈表的函數(shù) */void Fun(LinkList *hd,LinkList *ha,LinkList *hb,LinkList *hc) LinkList *p=hd->next,*ra,*rb,*rc;/定義三個(gè)指向鏈表結(jié)點(diǎn)的指針ra=ha;/ra始終指向ha的末尾結(jié)點(diǎn)rb=hb;/ra始終指向ha的末尾結(jié)點(diǎn)rc=hc;/ra始終指向ha的末尾結(jié)點(diǎn)while(p!=NULL) /當(dāng)指針p所指結(jié)點(diǎn)的指針域不為NULL時(shí),執(zhí)行以下循環(huán)過程if(p->data>='A'&&p->data<='Z'|p->data>='a'&&p->data<='z')/如果數(shù)據(jù)為字母類型ra->next=p;ra=p;/將*p鏈接到ha單鏈表末尾p=p->next; /p 指針后移elseif(p->data>='0'&&p->data<='9')/如果數(shù)據(jù)為數(shù)字類型rb->next=p;rb=p;/將*p鏈接到ha單鏈表末尾p=p->next; /p 指針后移else數(shù)據(jù)為其它類型的情況rc->next=p;rc=p;/將*p鏈接到ha單鏈表末尾p=p->next; /p 指針后移 ra->next=NULL; rb->next=NULL;rc->next=NULL;/將三個(gè)新鏈表尾結(jié)點(diǎn)的 next 域置空/*主 函數(shù) */int main() LinkList *hd,*ha,*hb,*hc;定義四個(gè)頭結(jié)點(diǎn)指針,*hd代表待拆分鏈表,*ha,*hb和*hc分別代表字母,數(shù)字和其它類型的鏈表ha=(LinkList *)malloc(sizeof(LinkList);/創(chuàng)建 ha 頭結(jié)點(diǎn)hb=(LinkList *)malloc(sizeof(LinkList);/創(chuàng)建 hb 頭結(jié)點(diǎn)hc=(LinkList *)malloc(sizeof(LinkList);/創(chuàng)建 hc 頭結(jié)點(diǎn) int i;/定義整型數(shù)據(jù)i,用于判斷是否終止本程序的運(yùn)行char m;定義字符型數(shù)據(jù)m,存放輸入i的值之后的n'while(1) Create(hd);/調(diào)用建立單鏈表并輸入數(shù)據(jù)的函數(shù)Fun(hd,ha,hb,hc);/調(diào)用拆分鏈表的函數(shù)printf("n字母:");/提示輸出的鏈表中數(shù)據(jù)為字母類型Printf(ha);/調(diào)用輸出鏈表元素的函數(shù),輸出ha鏈表中的數(shù)據(jù)(字母類型)printf("n數(shù)字:”);/提示輸出的鏈表中數(shù)據(jù)為數(shù)字類型Printf(hb);/調(diào)用輸出鏈表元素的函數(shù),輸出hb鏈表中的數(shù)據(jù)(數(shù)字類型)printf("n其它:”);/提示輸出的鏈表中數(shù)據(jù)為其它類型Printf(hc);/調(diào)用輸出鏈表元素的函數(shù),輸出hc鏈表中的數(shù)據(jù)(其它類型)printf("n是否結(jié)束?是,輸入0;否,輸入1n"); /提示是否終止本程序的運(yùn)行scanf("%d”,&i);輸入整數(shù) iprintf("n");if(i=1) scanf("%c",&m);存放輸入 i 的值之后的n'if(i=0) break;當(dāng)i為0時(shí),結(jié)束循環(huán),結(jié)束運(yùn)行printf("謝謝使用,再見! nn");return 0;

注意事項(xiàng)

本文(大數(shù)據(jù)結(jié)構(gòu) 將一個(gè)鏈表拆分成三個(gè)鏈表)為本站會(huì)員(mar****e5)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!