算法與數(shù)據(jù)結構ppt課件.ppt
《算法與數(shù)據(jù)結構ppt課件.ppt》由會員分享,可在線閱讀,更多相關《算法與數(shù)據(jù)結構ppt課件.ppt(26頁珍藏版)》請在匯文網(wǎng)上搜索。
1、S33.1 棧第三章.棧和隊列 (Chapter 3.Stack and Queue)棧(stack)是插入和刪除操作受限的線性表,是一種后進先出(Last In First Out-LIFO)的線性表。表頭端稱為棧底(bottom),表尾端稱為棧頂(top),插入和刪除都在棧頂進行。bottomtopS1S2S5S6S3S4S3S3S3S3S3PUSHPUSHPUSHPOPPUSHPUSHPUSH棧的基本操作:棧的基本操作:InistackClearGettopEmptyPushPop棧的實現(xiàn):棧的實現(xiàn):#define STACK_INIT_SIZE user_supply#define S
2、TACKINCREMENT user_supplytypedef struct elemtype *bottom;elemtype *top;int stackzise;sqstack;順序存儲結構表示棧Fulltypedef strcut lnode elemtype data;struct lnode *next;*linkedstack;鏈式存儲結構表示棧-鏈棧(Linked_stack)上溢(上溢(overflow):):若棧的容量已全部用完,再進行插入操作(PUSH),就會發(fā)生上溢錯誤。下溢(下溢(underflow):):若棧已空,再進行刪除操作(POP),就會發(fā)生下溢錯誤。3.2
3、 棧的應用-表達式求值 任一表達式(expression)都是由操作數(shù)(operand)、操作符(operator)和界限符(delimiter)組成。我們通常習慣使用中綴表達式(infix expression),但中綴表達式離不開括號(bracket)。若使用前綴表達式(prefix expression)或后綴表達式(postfix expression)則不需要括號。利用棧,可以將中綴表達式變?yōu)榍熬Y表達式或后綴表達式,再用棧進行運算即可得到表達式的值(value)。3.3 棧與遞歸遞歸(遞歸(recursive):):一個程序直接調(diào)用自己或通過其它程序調(diào)用自己就稱為遞歸。根據(jù)調(diào)用關系可
4、分為直接遞歸(direct recursive)和間接遞歸(indirect recursive)。第第 一一 次次 上上 機機 作作 業(yè)業(yè) 輸入表達式字符串,以輸入表達式字符串,以“=”表示表示結束,結束,計算并輸出表達式值。計算并輸出表達式值。操作數(shù)操作數(shù)可以是整數(shù)或?qū)崝?shù),操作符有可以是整數(shù)或?qū)崝?shù),操作符有“+”、“-”、“*”、“/”、“”(乘方)(乘方)和和“sin()”(正弦)、正弦)、“cos()”(余弦)、余弦)、“l(fā)og()”(對數(shù))、對數(shù))、“l(fā)n()”(自然對數(shù))等函數(shù)。自然對數(shù))等函數(shù)。棧在程序的過程或函數(shù)調(diào)用中的作用:過程一過程二過程三過程四斷點三斷點一斷點二斷點一斷點
5、二斷點三stack調(diào)用子程序返回斷點程序執(zhí)行 遞歸是程序設計中一種強有力的工具。下面三種情況可用遞歸解決:1、有些數(shù)學函數(shù)是遞歸定義的,對其求解可用遞歸;2、有些數(shù)據(jù)結構具有遞歸特性,對其操作可用遞歸;3、有些問題的解決方法用遞歸描述,對其求解也可用遞歸。例:例:求階乘(factorial):Fact(n)=1 當 n=0 nFact(n-1)當 n 0 int Fact (int n)if (!n)return 1;/出口條件出口條件 return n*Fact (n 1);/遞歸調(diào)用部分遞歸調(diào)用部分 例:例:求 n 個數(shù)的最小值:int Min(sqlist S,int n)if (n=1
6、)return S 1 ;/出口條件出口條件 x=Min(S,n-1);if (x S n )return m;return S n ;1、河內(nèi)塔問題的解決方法應用的就是分治法;例:例:程序設計常用方法之二:程序設計常用方法之二:回溯法(回溯法(Backtracking)回溯法是一種滿足一定條件的窮舉搜索法:在求解過程中,不斷利用可供選擇的規(guī)則擴展部分解,一旦當前的部分解不成立,就停止擴展,退回到上一個較小的部分解繼續(xù)試探,直到找到問題所有的解或無解為止。1、地圖染色(四色定理)問題:例:例:000102030405060002060601050302040 1 1 1 1 1 01 0 0
7、0 0 1 01 0 0 1 1 0 01 0 1 0 1 1 01 0 1 1 0 1 01 1 0 1 1 0 00 0 0 0 0 0 00 1 2 3 4 5 6R0132456void MapColor (int R n n,int s n )s 0 =1;/00 區(qū)染區(qū)染 1 色色 i=1;j=1;/i 為區(qū)域號,為區(qū)域號,j 為染色號為染色號 while (i n)while (j 4)&(i n)k=0;/k 指示已染色區(qū)域號指示已染色區(qū)域號 while (k i)&(s k *R i k !=j)k+;/判相鄰區(qū)是否已染色且不同色判相鄰區(qū)是否已染色且不同色 if (k 4)j
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 算法 數(shù)據(jù)結構 ppt 課件