freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

清華大學出版社---數(shù)據(jù)結構與算法趙玉蘭-等編著第3章(編輯修改稿)

2024-08-21 11:57 本頁面
 

【文章內(nèi)容簡介】 C 0 2 B A C 8 1 B C A 6 A B C 3 A B C 0 2 B A C 8 3 A B C 0 43 main() { int n。 coutInput number of disks‖。 cinn。 cout‖Steps:n― disks‖。 hanoi(n,39。A39。,39。B39。,39。C39。)。 (0) } void hanoi(int n,char x,char y,char z) (1) { (2) if(n==1) (3) move(1,x,z)。 (4) else{ (5) hanoi(n1,x,z,y)。 (6) move(n,x,z)。 (7) hanoi(n1,y,x,z)。 (8) } (9) } A B C 3 A B C 0 2 B A C 8 1 A B C 8 A B C 3 A B C 0 2 B A C 8 3 A B C 0 ??? 3 A B C 0 2 B A C 8 44 遞歸總結 1. 遞歸是重要的設計和編程工具,使許多算法變得簡單,易于設計和實現(xiàn) . ----優(yōu)點 2. 遞歸使算法的時間復雜度和空間復雜度同時增大,有時會導致效率急劇惡化,或者溢出系統(tǒng)棧。 ----缺點 3. 使用遞歸時應該權衡效率和設計的關系。在有足夠的空間并且時間要求不高的情況下可以使用遞歸。 轉(zhuǎn) 45 隊列 ( Queue ) ? 定義 – 隊列是只允許在表的一端進行刪除,而在另一端進行插入的線性表。 – 允許刪除的一端叫做隊頭 (front), – 允許插入的一端叫做隊尾 (rear)。 特點 先進先出 (FIFO, First In First Out) 1 s t 2 nd 3 r d 4 t h l a s t隊首 隊尾... 圖 3 . 946 ADT 隊列 隊列的抽象數(shù)據(jù)類型定義 ADT Queue { Data 數(shù)據(jù)項列表 front: 隊列中第一個元素的位置 rear: 隊列中最后一個元素的位置 Operations Constructor Process: 初始化隊首和隊尾 47 IsEmpty Process: 判斷是否為空隊列 Output: 若隊列空,返回 true,否則返回 false Length Process: 求隊列中元素個數(shù) Output: 返回隊列的元素個數(shù) Front Process: 取出隊頭元素 Output: 返回隊頭元素 隊列的抽象數(shù)據(jù)類型定義 48 隊列的抽象數(shù)據(jù)類型 Enter Input: 要進入隊列的元素 Process: 在隊尾插入新的元素 Leave Process: 刪除隊頭元素 Output: 返回隊頭元素 ClearQueue Process: 刪除隊列中所有元素并設置初始狀態(tài) }//Queue 49 隊列的實現(xiàn) 一、順序隊列 順序隊列定義如下: const int MaxQSize=50。 class SeqQueue{ int front, rear。 DataType QueueList[MaxQSize]。 public: SeqQueue()。//構造函數(shù) ,初始化數(shù)據(jù)成員 50 順序隊列定義如下: void Enter(DataType item)。 //入隊 DataType Leave()。 //出隊 void Clear()。 //清隊空 DataType Front()。 // 取隊頭元素 int Length()。 // 求隊長 bool IsEmpty()。 // 判斷隊是否為空 bool IsFull()。 //判斷隊是否為滿 }。// SeqQueue 51 圖 頭尾指針和隊列中元素的變化 rear 5 4 3 2 1 0 5 4 3 2 1 0 d 1 d 2 d 3 5 4 3 2 1 0 d 1 d 2 d 3 d 4 d 5 d 6 front front rear rear 5 4 3 2 1 0 d 5 d 6 rear front ( a ) 空隊列 ( b ) d 1 ,d 2 ,d 3 入隊 ( c ) d 4 ,d 5 ,d 6 入隊 ( d ) d 1 ,d 2 ,d 3 ,d 4 出隊 front 假溢出 真溢出 52 ?存在問題 ? 當 front=0,rear=M時,再有元素入隊發(fā)生溢出 ——真溢出 ? 當 front?0,rear=M時,再有元素入隊發(fā)生溢出 ——假溢出 ?解決方案 ? 隊首固定,每次出隊后剩余元素向下移動 ——浪費時間 ? 循環(huán)隊列 ? 基本思想:把隊列設想成環(huán)形,讓 QueueList [0]接在QueueList [M1]之后,若 rear==M, 則令 rear=0。 0 M1 1 front rear 循環(huán)隊列 53 隊滿: front==rear 0 1 2 3 4 5 rear front A5 A6 A7 0 1 2 3 4 5 rear front A4 A9 A8 A4 A5 A6 0 1 2 3 4 5 rear front 初始狀態(tài) 隊空: front==rear 循環(huán)隊列 54 其一 是給隊列設一個標志位以區(qū)別隊列是空還是滿; 其二 是給隊列增加一個統(tǒng)計元素個數(shù)的變量 count,當count=MaxQSize時隊滿; count=0時隊空; 其三 是比前兩種方法少用一個變量,約定隊尾指針加 1等于對頭指針(從后面趕上隊頭指針)為隊滿的情況。這種情況下隊滿的條件是: (rear+1) % MaxQSize==front, 也能和空隊區(qū)別開。此時隊列中有一個空單元。 在循環(huán)隊列中解決隊空和隊滿的三種處理方法: 55 SeqQueue(){ //構造函數(shù),初始化一個空隊列 front=rear=0。 }// SeqQueue void Enter(DataType item) { //入隊操作 if((rear+1)%MaxQSize==front) //判斷是否隊滿 cout‖隊列已滿,不能入隊!” endl。 else QueueList[rear++]=item。 }// Enter 循環(huán)隊列類的操作算法描述如下: 56 DataType Leave(){ //出隊操作 if(front==rear){ //判斷是否隊空 cout‖隊列已空,不能出隊” endl。 return nulldata。 } return(QueueList[++front])。 }// Leave 循環(huán)隊列類的操作算法描述如下: void ClearQueue(){ rear=front。 }// ClearQueue 57 循環(huán)隊列類的操作算法描述如下 : bool IsEmpty(){ //判斷隊列是否為空 if(rear==front) return true。 else return false。 }// IsEmpty bool IsFull(){ //判斷隊列是否已滿 if((rear+1)%MaxQSize==front) return true。 else return false。 }// IsFull 58 二、鏈隊列 鏈式存儲的隊稱為鏈隊列。和鏈棧類似,用單鏈表來實現(xiàn)鏈隊列,根據(jù)隊列的 FIFO原則,為了操作上的方便,我們分別需要一個頭指針和尾指針,如圖所示。隊頭在鏈頭,隊尾在鏈尾。鏈式隊列在進隊時無隊滿問題,但有隊空問題。 頭結點 ∧ 圖 鏈隊列示意圖 front … a2 rear a1 an ∧ 59 鏈隊列描述如下: class QNode{ //鏈隊結點的類 DataType data。 QNode *next。 public: QNode(DataType item=nulldata){ data= item。 next=NULL。 } }。 // QNode 60 鏈隊列描述如下: class LinkQueue { QNnode *front, *rear。 public: LinkQueue(){rear =front=new QNode()。} void Enter (DataType item )。 //入隊 DataType Leave()。 //出隊 DataType Front()。 //讀隊頭元素 void Clear(){frontnext = rearnext = NULL。 } bool IsEmpty() { return front –next== NULL。 } }。 // LinkQueue 61 鏈隊列的操作算法描述如下 : void Enter( DataType item ) { //入隊操作 //將新元素 item插入到隊列的隊尾 rearnext = new QNode ( item)。 rear=rearnext。 }//Enter 62 鏈隊列的操作算法描述如下 : DataType Leave( ) { //出隊操作 , 刪去隊頭結點,并返回隊頭元素的值
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1