


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、.實驗題目一、一、 需求分析需求分析.回文判斷的算法.1程序的功能:實現(xiàn)對字符序列是否是一個回文序列的判斷2輸入輸出的要求:從鍵盤讀入一組字符序列, 判斷是否是回文, 并將結(jié)果顯示在屏幕上3測試數(shù)據(jù):回文字符序列輸入:非回文字符序列輸入:二、二、 概要設(shè)計概要設(shè)計1本程序所用的抽象數(shù)據(jù)類型的定義:typedef struct char itemstacksize; int top;.sqstack;typedef struct qnode char data; struct qnode *next;lqnode, *pqnode;typedef struct pqnode front,rear
2、; linkqueue;2主程序的流程及各程序模塊之間的層次關(guān)系。(1)int initstack(sqstack *s):棧初始化模塊,即初始化一個空棧,隨后對該空棧進(jìn)行數(shù)據(jù)的寫入操作;(2)int push(sqstack *s, char data) :入棧操作,即給空棧中寫入數(shù)據(jù),數(shù)據(jù)長度有宏定義給出;(3)int pop(sqstack *s, char *data) :出棧操作,即將棧中的數(shù)據(jù)輸出,由于棧的操作是先進(jìn)后出,因此,出棧的數(shù)據(jù)是原先輸入數(shù)據(jù)的逆序;(4)int initqueue(linkqueue *q):隊列初始化,即初始化一個空隊列,最后對該空隊列進(jìn)行數(shù)據(jù)的寫入操
3、作;(5)int enqueue(linkqueue *q, char item):入隊操作, 即給空隊列中寫入數(shù)據(jù), 數(shù)據(jù)長度一樣有宏定義給出;.(6)int dequeue(linkqueue *q, char *item) :出隊操作, 即將隊列中的數(shù)據(jù)輸出, 由于隊列的操作是先進(jìn)先出,因此,出隊的數(shù)據(jù)室原先輸入數(shù)據(jù)的正序;(7)int main():主函數(shù),用于調(diào)用前面的模塊,進(jìn)行出隊數(shù)據(jù)與出棧數(shù)據(jù)的比較, 判斷輸入的序列是否是回文序列。模塊之間關(guān)系及其相互調(diào)用的圖示:三、三、 詳細(xì)設(shè)計詳細(xì)設(shè)計1采用 c 語言定義相關(guān)的數(shù)據(jù)類型.整形,字符型,指針類型,聚合類型,自定義類型2寫出各模塊
4、的偽碼算法:參照源程序(1)int initstack(sqstack *s)(2)int push(sqstack *s, char data)(3)int pop(sqstack *s, char *data)(4)int initqueue(linkqueue *q)(5)int enqueue(linkqueue *q, char item)(6)int dequeue(linkqueue *q, char *item)四、四、 調(diào)試分析調(diào)試分析1調(diào)試中遇到的問題及對問題的解決方法:問題:程序出現(xiàn)未知錯誤。方法: 在感覺容易出錯的地方或者是已經(jīng)出錯的地方前面打斷點,進(jìn)一步調(diào)試。2算法的
5、時間復(fù)雜度和空間復(fù)雜度。時間復(fù)雜度:t(n) = o(n)五、五、 使用說明及測試結(jié)果使用說明及測試結(jié)果回文字符輸入:非回文字符輸入:.六、六、 源程序(帶注釋)源程序(帶注釋)#include #include #include #define stacksize 100typedef struct char itemstacksize; int top;sqstack;/*順序棧的定義*/typedef struct qnode char data; struct qnode *next;lqnode, *pqnode;typedef struct. pqnode front,rear;
6、linkqueue;/*鏈隊列的定義*/int initstack(sqstack *s);/*初始化順序棧*/int stackempty(sqstack s);/*判斷是否為空棧*/int push(sqstack *s, char data);/*入棧*/int pop(sqstack *s, char *data);/*出棧*/int initqueue(linkqueue *q);/*初始化鏈隊列*/int queueempty(linkqueue q);/*判斷是否為空隊列*/int enqueue(linkqueue *q, char item);/*入隊*/int dequeu
7、e(linkqueue *q, char *item);/*出隊*/int traversequeue(linkqueue q);/*遍歷*/int initstack(sqstack *s) /*初始化順序棧*/s-top = -1; return 1;int stackempty(sqstack s)/*判斷是否為空棧*/. if(s.top = -1) return 1; else return 0;int push(sqstack *s, char data)/*入棧*/ if(s-top = stacksize - 1) printf(n 棧已滿,不能完成入棧操作!); return
8、 0; s-top+; s-items-top = data; return 1;int pop(sqstack *s, char *data)/*出棧*/ if (s-top = -1) printf(n 堆棧已空,不能完成出棧操作!);. return 0; *data = s-items-top; s-top-; return 1;int initqueue(linkqueue *q)/*初始化鏈隊列*/ q-front=q-rear(pqnode)malloc(sizeof(lqnode); if(!q-front)printf(n 初始化隊列失?。?;return 0; q-fron
9、t-next = null; return 1;.=.int queueempty(linkqueue q)/*判斷是否為空隊列*/ if (q.front = q.rear)printf(n 隊列為空!);return 1; else return 0;int enqueue(linkqueue *q, char item)/*入隊*/ pqnode p; p = (pqnode)malloc(sizeof(lqnode); if(!p) printf(n 內(nèi)存分配失敗); return 0; p-data = item;. p-next = null; q-rear-next = p; q
10、-rear = p; return 1;int dequeue(linkqueue *q, char *item)/*出隊*/ pqnode p; if(q-front = q-rear) printf(n 隊列已空,不能出隊); return 0; p = q-front-next; *item = p-data; q-front-next = p-next; free(p); if(q-rear = p) /*若刪除的為最后一個結(jié)點,移動隊尾指針*/ q-front = q-rear;. return 1;int traversequeue(linkqueue q)/*遍歷*/ pqnod
11、e pos; if(q.front = q.rear) printf(n 隊列為空!); return 0; pos = q.front-next; printf(nhere is the string:); while(pos != null) printf(%c, pos-data); pos = pos-next; printf(n); return 1;.int main() int i,len,count1 = 0; char str1100,ch,ch1; linkqueue lq1,lq2; sqstack sq; printf(請輸入字符:); scanf(%s, &str1); len = strlen(str1); initqueue(&lq1); initqueue(&lq2); initstack(&sq); for(i=0;ilen;i+) enqueue(&lq1,str1i); traversequeue(lq1); for(i=0;ilen;i+) . dequeue(&lq1,&ch); push(&sq,ch); enqueue(&lq1,ch); for(i=0;ilen;i+) pop(&sq,&ch); enqueue(&lq2,c
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤礦機(jī)器人與自動化
- 老年人用藥,莫“跟著感覺走”
- 2025年遼寧高校畢業(yè)生“三支一扶”計劃考試筆試試題(含答案)
- 2025年江蘇鹽城市射陽縣城市照明服務(wù)有限公司聘考試筆試試題(含答案)
- 老年疾病護(hù)理
- 老年護(hù)理溝通課件
- 車輛質(zhì)押擔(dān)保貸款服務(wù)合同樣本
- 美容美發(fā)場地租賃合同終止及客戶服務(wù)協(xié)議
- 戀愛期間情感關(guān)懷與財產(chǎn)管理協(xié)議
- 專業(yè)辦公租賃及企業(yè)孵化服務(wù)合同
- 初中學(xué)校教學(xué)常規(guī)培訓(xùn)
- 咖啡拉花培訓(xùn)課程
- 消化道腫瘤患者的護(hù)理
- 廣東省2024年普通高中學(xué)業(yè)水平合格性考試化學(xué)(一)試題附參考答案(解析)
- 2023年崗位知識-銀行信息科技條線知識考試沖刺-歷年真題演練帶答案
- JB-T 14227-2022 流砂過濾器標(biāo)準(zhǔn)
- 石行業(yè)安全事故案例學(xué)習(xí)
- 更換給水水泵的施工方案
- 三叉神經(jīng)痛(講)課件
- 企業(yè)工會采購制度管理規(guī)定
- 糖尿病患者低血糖發(fā)生原因分析品管圈魚骨圖柏拉圖
評論
0/150
提交評論