关于计算机算法的ppt,计算机算法PPT大全.ppt
《計算機算法PPT大全.ppt》由會員分享,可在線閱讀,更多相關《計算機算法PPT大全.ppt(11頁珍藏版)》請在人人文庫網上搜索。
1、a,1,算法深入學習實錄,第3章走在算法的路上之分析簡單的數據結構,技術支持:,a,2,目 錄,a,3,第3章 走在算法的路上之分析簡單的數據結構,3.1 學習編程的注意事項 (1)在學習知識之前要有足夠的理解,也就是說蓋房打地基之前要先有一個大概的了解、規劃。 (2)做什么事情都有捷徑可尋,但是有時候,在學習編程的過程中走捷徑并不是一件很好的事情。,a,4,第3章 走在算法的路上之分析簡單的數據結構,3.2 喜歡單挑線性表 3.2.1 線性表的特性 線性表是一個線性結構,它是一個含有n0個節點的有限序列。在節點中,有且僅有一個開始節點沒有前驅并有一個后繼節點,有且僅有一個終端節點沒有后繼并有。
2、一個前驅節點。其他的節點都有且僅有一個前驅和一個后繼節點。通常可以把一個線性表表示成一個線性序列:k1,k2,kn,其中k1是開始節點,kn是終端節點。 1. 線性結構的特征 在編程領域中,線性結構具有如下兩個基本特征。 (1)集合中必存在唯一的一個“第一元素”和唯一的一個“最后元素”; (2)除最后一個元素之外,均有唯一的后繼(后件)和唯一的前驅(前件); 由n(n0)個數據元素(節點)a1,a2,an組成的有限序列,數據元素的個數n定義為表的長度。當n=0時稱為空表,我們通常將非空的線性表(n0)記作: (a1,a2,an) 數據元素ai(1in)沒有特殊含義,大家不必去“剖根問底”的研究。
3、它,它只是一個抽象的符號,其具體含義在不同的情況下可以不同。 2. 線性表的基本操作過程 線性表雖然只是一對一的單挑,但是其操作功能非常強大,具備了很多操作技能。 3. 線性表的結構特點 均勻性:雖然不同數據表的數據元素是各種各樣的,但同一線性表的各數據元素必須有相同的類型和長度; 有序性:各數據元素在線性表中的位置只取決于它們的序。數據元素之前的相對位置是線性的,即存在唯一的“第一個”和“最后一個”的數據元素,除了第一個和最后一個外,其他元素前面只有一個數據元素直接前趨,后面只有一個直接后繼。,a,5,第3章 走在算法的路上之分析簡單的數據結構,3.2.2 順序表操作 在現實應用中,有兩種實。
4、現線性表數據元素存儲功能的方法,分別是順序存儲結構和鏈式存儲結構。順序表操作是最簡單的操作線性表的方法,此方式的主要操作功能如下所示。 (1)計算順序表的長度 (2)清空操作 (3)判斷線性表是否為空 (4)判斷順序表是否為滿 (5)附加操作 (6)插入操作 (7)刪除操作 (8)獲取表元 (9)按值進行查找,a,6,第3章 走在算法的路上之分析簡單的數據結構,3.2.3 鏈表操作 鏈比順序表要復雜一點,對于同一個數據,它可以和不相鄰的數據發生關系。例如農民通常將收獲的水果賣給商販,商販將收購的水果賣給加工廠。這是一條水果加工產業鏈,可以得出商販是農民的財神、加工廠是商販的財神這一論調。在那一。
5、年的某一天,老實的農民發現利潤較低,于是拉著自己的水果不遠萬里的親自賣給了加工廠。這樣農民伯伯獲得了更大的利潤,而商販也不能怎么著,這個產業鏈還得繼續下去。 由此可見,鏈式存儲結構不需要用地址連續的存儲單元來實現,而是通過“鏈”建立起數據元素之間的次序關系。所以它不要求邏輯上相鄰的兩個數據元素在物理結構上也相鄰,在插入和刪除時無需移動元素就而提高了運行效率。鏈式存儲結構主要有單鏈表、循環鏈表、雙向鏈表、靜態鏈表等幾種形式。,a,7,第3章 走在算法的路上之分析簡單的數據結構,3.3 守規矩的先進先出的隊列 3.3.1 隊列基礎 隊列和棧一樣,只允許在斷點處插入和刪除元素,循環隊的入隊算法如下所。
6、示。 (1)tail=tail+1; (2)如果tail=n+1,則tail=1; (3)如果head=tai,即尾指針與頭指針重合,則表示元素已裝滿隊列,會施行上溢出錯處理;否則Q(tail)=X,結束整個過程,其中X表示新入出元素。 3.3.2 鏈隊列和循環隊列 使用C語言定義鏈隊列的格式如下所示。 typedef struct QNode ElemType data; struct QNode *next; QNode, *QueuePtr; typedef struct QueuePtr front; /* 隊頭指針,指向頭元素 */ QueuePtr rear; /* 隊尾指針,指向。
7、隊尾元素 */ LinkQueue;,a,8,第3章 走在算法的路上之分析簡單的數據結構,3.3.3 隊列的基本操作 (1)初始化隊列Q的目的是創建一個隊列 (2)入隊的目的是將一個新元素添加到隊尾,相當于到隊列最后排隊等候。 (3)出隊的目的是取出隊頭的元素,并同時刪除該元素,使后一個元素成為隊頭。 (4)獲取隊列第1個元素,即將隊頭的元素取出,不刪除該元素,隊頭仍然是該元素。 (5)判斷隊列Q是否為空 3.3.4 隊列的鏈式存儲 當使用鏈式存儲結構表示隊列時,需要設置隊頭指針和隊尾指針,這樣做的好處是可以設置隊頭指的針和隊尾的指針。在入隊時需要執行如下三條語句。 s-next=NULL; 。
8、rear-next=s; rear=s; 在C語言中,實現隊列鏈式存儲結構類型的代碼如下所示。 type struct linklist /鏈式隊列的節點結構 Elemtype Entry; /隊列的數據元素類型 struct linklist *next; /指向后繼節點的指針 LINKLIST; typedef struct queue /鏈式隊列 LINKLIST *front; /隊頭指針 LINKLIST *rear; /隊尾指針 QUEUE;,a,9,第3章 走在算法的路上之分析簡單的數據結構,3.4 后進先出的棧 3.4.1 什么是棧 棧允許在同一端進行插入和刪除操作,允許進行插。
9、入和刪除操作的一端稱為棧頂(top),另一端稱為棧底(bottom)。棧底是固定的,而棧頂浮動的;如果棧中元素個數為零則被稱為空棧。插入操作一般被稱為進棧(PUSH),刪除操作一般被稱為退棧(POP)。 在棧中有兩種基本操作,分別是入棧和出棧。 (1)入棧(Push) 將數據保存到棧頂。在進行入棧操作前,先修改棧頂指針,使其向上移一個元素位置,然后將數據保存到棧頂指針所指的位置。入棧(Push)操作的算法如下: 如果TOP,則給出溢出信息,作出錯處理。在進棧前首先檢查棧是否已滿,如果滿則溢出;不滿則進入下一步驟; 設置TOP=TOP+1,使棧指針加,指向進棧地址; S(TOP)=X,結束操作,。
10、X為新進棧的元素。 (2)出棧(Pop) 將棧頂的數據彈出,然后修改棧頂指針,使其指向棧中的下一個元素。出棧(Pop)操作的算法如下: 如果TOP0,則輸出下溢信息,并實現出錯處理。在退棧之前先檢查是否已為空棧,如果是空則下溢信息,如果不空則進入下一步驟; X=S(TOP),退棧后的元素賦給X; TOP=TOP-1,結束操作,棧指針減,指向棧頂。,a,10,第3章 走在算法的路上之分析簡單的數據結構,3.4.2 棧的基本操作 1. 順序棧 順序棧是棧的順序存儲結構的簡稱,它是一個運算受限的順序表。假設S是SeqStack類型的指針變量,如果棧底位置在向量的低端,則S-data0是棧底元素。 2. 鏈棧 鏈棧是指棧的鏈式存儲結構,是沒有附加頭節點的、運算受限的單鏈表,棧頂指針是鏈表的頭指針。,a,11,謝謝您的支持 !,2012年5月20日,技術支持。
總結
以上是生活随笔為你收集整理的关于计算机算法的ppt,计算机算法PPT大全.ppt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32之ADM706驱动
- 下一篇: ImageMagick之图片缩放