




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、用棧設(shè)置密碼C程 序 設(shè) 計(jì)用棧設(shè)置密碼用棧設(shè)計(jì)一個(gè)密碼驗(yàn)證程序。在程序中預(yù)置一個(gè)密碼,之后進(jìn)行密碼驗(yàn)證,密碼驗(yàn)證共有3次機(jī)會(huì)。CONTENTS01編程思路分析基礎(chǔ)知識(shí)點(diǎn)具體實(shí)現(xiàn)總結(jié)與拓展030204編程思路分析1.編程思路分析預(yù)置一個(gè)原始密碼PASSWORD,并置密碼驗(yàn)證次數(shù)i=0,用變量k記錄密碼PASSWORD的長(zhǎng)度,定義棧s用于存儲(chǔ)輸入的密碼若i0, 則不是第一次輸入密碼,棧中已有內(nèi)容,則清空棧輸入猜測(cè)密碼,并將該密碼串中的元素依次入棧,次數(shù)i加11.編程思路分析將棧中的元素依次出棧,逐個(gè)與原始密碼比較,判斷是否相同,若有元素不同,則轉(zhuǎn)2,若所有元素均相同,則轉(zhuǎn)3.判斷i是否等于3.若
2、為真,則驗(yàn)證次數(shù)超過(guò)三次,退出。否則密碼正確。比較猜測(cè)密碼和原始密碼長(zhǎng)度是否相等,若長(zhǎng)度不等,則轉(zhuǎn)2,若相等則進(jìn)入2.4基礎(chǔ)知識(shí)點(diǎn)l 棧: 限制僅在一端進(jìn)行插入和刪除運(yùn)算的線性表?xiàng)m敆m敆5讞5兹霔H霔3鰲3鰲 棧頂:進(jìn)行插入、刪除的一端l 棧底:除棧頂外的另一端.a2a1an棧是后進(jìn)先出表( LIFO ) 棧的概念棧的概念2. 基礎(chǔ)知識(shí)點(diǎn)2. 基礎(chǔ)知識(shí)點(diǎn) 棧的基本操作棧的基本操作l 置空棧 createEmptyStack(void):空棧;l 判???isEmptytack(st):這是一個(gè)布爾函數(shù)。若st為空棧,則函數(shù)值為“真”, 否則為“假”。l 入棧 push(st,x):在st的
3、頂部插入(亦稱壓入)元素 x。l 出棧 pop(st):刪除(亦稱彈出)棧st的頂部元素。l 取棧頂 top(st):取棧st的頂部元素。2. 基礎(chǔ)知識(shí)點(diǎn)棧的兩種實(shí)現(xiàn)方式棧的兩種實(shí)現(xiàn)方式順序棧和鏈棧 順序棧順序棧 鏈棧鏈棧利用一組地址連續(xù)的存儲(chǔ)單元依次存放自棧頂?shù)綏5椎臄?shù)據(jù)元素。棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)稱為鏈棧。由于只能在鏈表頭部進(jìn)行操作,故鏈棧沒(méi)有必要像單鏈表那樣需附加頭結(jié)點(diǎn)。棧頂指針top就是鏈表的頭指針head。2. 基礎(chǔ)知識(shí)點(diǎn) 順序棧的定義順序棧的定義#define STACK_SIZE 100 /設(shè)定??臻g最多設(shè)定棧空間最多100個(gè)元素個(gè)元素typedef struct /聲明結(jié)構(gòu)體類型聲明
4、結(jié)構(gòu)體類型 char *base; char *top; int stacksize; int length;SeqStack;2. 基礎(chǔ)知識(shí)點(diǎn) 棧的初始化棧的初始化void Initial(SeqStack *s) /初始化,構(gòu)造棧初始化,構(gòu)造棧 s - base = (char *)malloc (STACK_SIZE*sizeof(char); if(!s-base) exit(-1); s - top = s - base; s - stacksize = STACK_SIZE; s - length = 0;2. 基礎(chǔ)知識(shí)點(diǎn) 入棧操作入棧操作void Push(SeqStack *s
5、,char x) /進(jìn)棧進(jìn)棧 if(IsFull(s) printf(棧上溢棧上溢n); exit(1); *(s- top +) = x ; +s-length;2. 基礎(chǔ)知識(shí)點(diǎn) 出棧操作出棧操作char pop(SeqStack *s) /出棧出棧 if(IsEmpty(s) printf(棧為空棧為空n); exit(1); -(s-length); return *-s - top;2. 基礎(chǔ)知識(shí)點(diǎn) 取棧頂元素取棧頂元素void GetTop(SeqStack *s,char *e) /取棧頂元素取棧頂元素 if(IsEmpty(s) printf(棧為空棧為空n); exit(1);
6、 *e = *(s-top-1); s-top -;2. 基礎(chǔ)知識(shí)點(diǎn) 判斷??张袛鄺?読nt IsEmpty(SeqStack *s) /判空判空 return s - top = s - base;int IsFull(SeqStack *s) /判滿判滿 return s - top - s-base = STACK_SIZE -1; 判斷棧滿判斷棧滿2. 基礎(chǔ)知識(shí)點(diǎn) 按出棧順序取棧頂元素按出棧順序取棧頂元素void change(SeqStack *s,char *a) /出棧順序取棧頂元素出棧順序取棧頂元素 int n = s - length - 1; while(!IsEmpty(
7、s) GetTop(s,&an-); 清空棧清空棧void clearstack(SeqStack *s) /清空棧清空棧 s - top = s - base; s - length = 0;具體實(shí)現(xiàn)總結(jié)與拓展棧是一種“后進(jìn)先出”線性表,本例中,用棧存儲(chǔ)輸入的猜測(cè)密碼。由于棧的這種“后進(jìn)先出”的特性,為了方便與原始密碼一一比較,故在函數(shù)change()中,棧中元素依次出棧時(shí),將出棧的元素在數(shù)組a中從后往前放置。在對(duì)棧的操作中,要特別注意不能出現(xiàn)“上溢”和“下溢”,即棧滿時(shí)不能進(jìn)行入棧操作,??諘r(shí)不能進(jìn)行出棧操作。故本程序中編寫了兩個(gè)函數(shù)IsEmpty()和IsFull()用于判斷??蘸蜅M,在對(duì)棧進(jìn)行入棧和出棧之前,可調(diào)用
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 短視頻平臺(tái)賬號(hào)代運(yùn)營(yíng)與數(shù)據(jù)分析協(xié)議
- 智能家居設(shè)施配套房產(chǎn)銷售合同
- 虛擬現(xiàn)實(shí)游戲角色動(dòng)畫特效制作服務(wù)協(xié)議
- 跨國(guó)經(jīng)銷商品牌代理權(quán)合作框架協(xié)議
- 私人直升機(jī)航拍體育賽事影像作品版權(quán)分成及授權(quán)協(xié)議
- 拼多多平臺(tái)店鋪客服團(tuán)隊(duì)構(gòu)建與運(yùn)營(yíng)協(xié)議
- 法拍房稅費(fèi)繳納責(zé)任劃分及支付合同
- 國(guó)際田徑運(yùn)動(dòng)會(huì)票務(wù)總代理服務(wù)補(bǔ)充協(xié)議
- 電力項(xiàng)目風(fēng)險(xiǎn)評(píng)估補(bǔ)充協(xié)議
- 中班綜合活動(dòng):小兔分蘿卜
- NPT5空氣壓縮機(jī)檢修
- 分部工程質(zhì)量驗(yàn)收記錄
- Q∕SY 13123-2017 物資倉(cāng)儲(chǔ)技術(shù)規(guī)范
- 合肥市不動(dòng)產(chǎn)登記申請(qǐng)審批表-版本
- 防洪度汛檢查表
- 手術(shù)通知單模板
- 招商合同范本4篇-合同范本
- 《西方音樂(lè)史》課件伯遼茲
- 關(guān)于互聯(lián)網(wǎng)金融對(duì)商業(yè)銀行風(fēng)險(xiǎn)影響的實(shí)證研究會(huì)計(jì)學(xué)專業(yè)
- 十八項(xiàng)電網(wǎng)重大反事故措施
- 液壓缸常見(jiàn)故障類型及維修或排除方法
評(píng)論
0/150
提交評(píng)論