數(shù)據(jù)結(jié)構(gòu)大作業(yè)封面模板_第1頁
數(shù)據(jù)結(jié)構(gòu)大作業(yè)封面模板_第2頁
數(shù)據(jù)結(jié)構(gòu)大作業(yè)封面模板_第3頁
數(shù)據(jù)結(jié)構(gòu)大作業(yè)封面模板_第4頁
數(shù)據(jù)結(jié)構(gòu)大作業(yè)封面模板_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、12級軟件設(shè)計大作業(yè)題 目概念圖難度系數(shù) 0.7成 績 班 級 011213完成者1學(xué)號01121345姓名 楊英杰完成者2學(xué) 號01121278 姓 名 曹偉完成者3學(xué)號01121289姓名 趙漢卿完成日期2014.6.22(若是多人合作,填寫下面的內(nèi)容,給出所有合作者的信息) 姓名:楊英杰主要完成的工作:線性表、棧和隊列、數(shù)組和串姓名:曹偉主要完成的工作:圖、索引、散列姓名:趙漢卿主要完成的工作:樹、緒論、算法設(shè)計與分析 一、軟件系統(tǒng)名稱完整線性表輸出。二、軟件分析與設(shè)計1、問題分析:線性表內(nèi)容包含兩部分,分別是字母(表示下個鏈表)和數(shù)字。因此鏈表中節(jié)點 需要包含指向下一個節(jié)點或下個鏈表的

2、指針等多個數(shù)據(jù)類型。系統(tǒng)輸入:線性表名稱(字母)和線性表內(nèi)容(數(shù)字) 。系統(tǒng)輸出:線性表(包括線性表名稱和線性表內(nèi)容)??偣δ埽嚎稍谠墟湵砘A(chǔ)上不斷添加數(shù)字或新鏈表,并顯示每個鏈表的內(nèi)容及整體鏈表的內(nèi) 容。2、測試樣例在程序輸入均含有提示,如果輸入錯誤,會導(dǎo)致重新輸入,不會直接退出程序。 輸入包含:輸入提示測試樣例預(yù)期結(jié)果請輸入需要添加的鏈表名稱(輸入END標(biāo))END退出C (已在線性表中的鏈表字母)顯布卜個輸入Sg或D或12 (任何/、是線性 表字母的輸入)輸入有誤,請重新輸入請輸入數(shù)字或新鏈表名稱(輸 入end結(jié)束)end退出132 (數(shù)字)或Q (未保存在線 性表中的鏈表字母)顯布卜個

3、輸入Ass或46s (小止常輸入)輸入有誤,請重新輸入3、全局變量包括:所有鏈表的指針和表示鏈表指針數(shù)目的數(shù)字變量;用語構(gòu)成隊列的數(shù)組指 針和表示表示隊列的兩個變量front和rear。4、模塊分類創(chuàng)建鏈表模塊函數(shù)名稱:CreateList函數(shù)參數(shù):鏈表名稱 name函數(shù)功能:生成鏈表返回值:鏈表頭指針偽代碼描述:定義頭指針;分配節(jié)點空間;節(jié)點數(shù)據(jù)初始化(鏈表名 =name);返回頭指針初始化模塊函數(shù)名稱:InitList函數(shù)參數(shù):無函數(shù)功能:鏈表初始化返回值:無偽代碼描述:在鏈表中原有鏈表中插入數(shù)字和鏈表;新鏈表的插入數(shù)字和鏈表;插入鏈表模塊函數(shù)名稱:AtLast函數(shù)參數(shù):鏈表頭指針函數(shù)功能

4、:尋找鏈表中最后指針返回值:最后指針偽代碼描述:While (下一個節(jié)點指針不空) 指向下一個節(jié)點指針返回函數(shù)名稱:InsertNumber函數(shù)參數(shù):鏈表頭指針,數(shù)字函數(shù)功能:鏈表中插入數(shù)字返回值:新節(jié)點指針偽代碼描述:尋找最后指針;分配節(jié)點空間;節(jié)點數(shù)據(jù)初始化;鏈表與節(jié)點鏈接返回節(jié)點指針函數(shù)名稱:InsertList函數(shù)參數(shù):鏈表頭指針,要插入鏈表頭指針函數(shù)功能:鏈表中插入指針返回值:新鏈表頭指針偽代碼描述:尋找最后指針;分配節(jié)點空間;節(jié)點數(shù)據(jù)初始化原鏈表與節(jié)點連接節(jié)點與要插入鏈表頭指針鏈接返回節(jié)點指針數(shù)組隊列模塊函數(shù)名稱:Qinit函數(shù)參數(shù):無函數(shù)功能:隊列初始化返回值:無偽代碼描述:fr

5、ont=rear=0函數(shù)名稱:push函數(shù)參數(shù):指針函數(shù)功能:入隊列返回值:無偽代碼描述:指針進入數(shù)組front+函數(shù)名稱函數(shù)參數(shù)pop無出隊列函數(shù)功能: 返回值:無 偽代碼描述:rear+函數(shù)名稱:top函數(shù)參數(shù):指針函數(shù)功能:返回隊列頭指針返回值:隊列頭指針偽代碼描述:返回隊列頭指針函數(shù)名稱:empty函數(shù)參數(shù):無函數(shù)功能:判斷隊列是否空返回值:bool變量偽代碼描述:隊列空;返回true;Else 返回 false刪除模塊函數(shù)名稱:DeleteList函數(shù)參數(shù):鏈表頭指針函數(shù)功能:釋放線性表空間返回值:無偽代碼描述:隊列初始化;頭指針入隊列While (隊列不空)出隊列并存儲隊首值指向下

6、一個節(jié)點If (節(jié)點為數(shù)字)釋放空間、else指針入隊列并釋放空間顯示模塊函數(shù)名稱:Show函數(shù)參數(shù):無函數(shù)功能:輸出只有數(shù)值的完整線性表返回值:無偽代碼描述:顯示線性表字母輸出函數(shù)換行函數(shù)名稱:ShowL函數(shù)參數(shù):指針函數(shù)功能:輸出鏈表內(nèi)容返回值:無偽代碼描述:指向下一個節(jié)點If (節(jié)點為數(shù)字)輸出數(shù)字else遞歸調(diào)用函數(shù),傳遞此節(jié)點指針函數(shù)名稱:ShowList函數(shù)參數(shù):指針函數(shù)功能:輸出線性表內(nèi)容返回值:無偽代碼描述:隊列初始化;頭指針入隊列While (隊列不空)出隊列并存儲隊首值顯示鏈表頭字母指向下一個節(jié)點If (節(jié)點為鏈表節(jié)點)顯示鏈表頭字母和,入隊列else顯示數(shù)字和,輸入模塊函

7、數(shù)名稱:NoCreate函數(shù)參數(shù):鏈表名稱 name函數(shù)功能:判斷隊列是否存在于線性表返回值:bool量偽代碼描述:數(shù)組中依次尋找If 找到 false無 返回true函數(shù)名稱:Input函數(shù)參數(shù):無函數(shù)功能:輸入處理返回值:無偽代碼描述:ShowList輸出提示輸入(為字符串)While (輸入不結(jié)束)5、流程圖MainIf (輸入合理(為單一字母且已存在線性表)找到線性表中的該鏈表輸出提示輸入(為字符串)While (輸入不結(jié)束)If (輸入為新單一字母)新建鏈表并插入,并存儲如全局數(shù)組中Else if (為數(shù)字)字符串轉(zhuǎn)化為數(shù)字并加入原鏈表中Else提示輸入錯誤提示并重新輸入Else提示

8、輸入錯誤 提示并重新輸入創(chuàng)建鏈表初始化部分輸入鏈表完成輸入完成顯示線性表顯示只有數(shù)值的完整線性表三、運行環(huán)境codeblocks (建議編譯器為 gcc)。四、軟件使用說明軟件系統(tǒng)輸入以輸出和異常處理均在上述表格中得到。五、源代碼#include#include#include#includeusing namespace std;typedef struct nodebool isList;int number;node *nextNumber,*nextList;char listName;List;typedef struct nodehchar name;List *head;HLis

9、t;HList ListHead100;int Nlisthead=0;List *CreateList(char name);List *AtLast(List *head);List *InsertNumber(List *head,int number);List *InsertList(List *head1,List *head2);void InitList(List *head);void ShowList(List *head);void DeleteList(List *head);void Input();bool NoCreate(char name);void Show

10、();int main()List *head=CreateList(A);InitList(head);Input();Show();DeleteList(head);return 0;List *CreateList(char name) List *head;head=(List *)malloc(sizeof(List);head-listName=name;head-isList=true;head-nextNumber=head-nextList=NULL;return head;List *AtLast(List *head) while(head-nextNumber)head

11、=head-nextNumber; return head;List *InsertNumber(List *head,int number) head=AtLast(head);List *newNode=(List *)malloc(sizeof(List);newNode-isList=false;newNode-number=number;newNode-nextList=newNode-nextNumber=NULL;head-nextNumber=newNode;return newNode;List *InsertList(List *head1,List *head2) hea

12、d1=AtLast(head1);List *newNode=(List *)malloc(sizeof(List);newNode-isList=true;newNode-listName=head2-listName;newNode-nextNumber=NULL;newNode-nextList=head2;head1-nextNumber=newNode;return head2;void InitList(List *head)/A鏈表初始化InsertNumber(head,1);InsertNumber(head,2);InsertNumber(head,3);InsertNum

13、ber(head,4);InsertNumber(head,5);List *head1=CreateList(B);InsertList(head,head1);/B鏈表初始化InsertNumber(head1,7);InsertNumber(head1,8);InsertNumber(head1,9);List *head2=CreateList(C);InsertList(head1,head2);/C鏈表初始化InsertNumber(head2,10);存儲所有鏈表頭指針ListHead0.head=head;ListHead1.head=head1;ListHead2.head=

14、head2;ListH=A;ListH=B;ListH=C;Nlisthead=3;隊列定義及所有操作const int MAXQ=10000;List * ListQueueMAXQ;int front,rear;初始化(隊列清空)void Qinit()front=rear=0;/入隊列void push(List *head)if(frontMAXQ)ListQueuefront+=head;出隊列void pop()rear+;/返回隊首元素List *top()if(rear,temp-listName);temp=temp-ne

15、xtNumber;while(temp)if(temp-isList)printf(%c,temp-listName); push(temp-nextList);if(temp-nextNumber)printf(,);elseprintf(%d,temp-number);if(temp-nextNumber) printf(,);temp=temp-nextNumber;printf(n);判斷一個鏈表名稱是否已被創(chuàng)建bool NoCreate(char name)for(int i=0;i=A&temp10=Z&!temp11)for(int i=0;i=A&temp20=0&temp2jnextNumber;while(templ)if(temp1-isList)push(temp1-nextList);temp2=temp1-nextNumber; free(templ);temp1=temp2;void ShowL(List *head)List *temp=head-nextNumber;while(temp)if(temp-isList)Sho

溫馨提示

  • 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

提交評論