讀《算法與數據結構》第三、四、五章

讀《算法與數據結構》第三、四、五章

一、字符串及其抽象數據結構

1、基本概念
(1)字符串是一種特殊地線性表

二、棧

1、棧及其抽象數據類型
(1)棧是一種特殊地線性表,所有地插入和刪除都限制在表的同一端進行

2、棧的溢出
(1)由於棧是一個動態結構,而數組是靜態結構,因此會出現溢出問題
(2)如果元素足夠,如果再作進棧運算,則會產生溢出,稱爲上溢Overflow
(3)如果對空棧進行出棧運算,也會產生溢出,通常稱爲下溢Underflow

3、棧與遞歸
(1)靜態分配
在非遞歸調用的情況下,數據區的分配可以在程序運行前進行,一直到整個程序運行結束才釋放
(2)動態分配
遞歸調用時,被調函數的局部量不能分配給固定的單元,而必須每調用一次就分配一份,當前程序中的所有的量(包括形參、局部變量和中間工作單元等)都必須是最近一次遞歸調用時所分配的數據區中的量
(3)運行棧: 動態分配的處理方法, 在內存中開闢一個存儲區域稱爲運行棧

三、回溯法

1、迷宮問題
(1)要求
從入口到出口的一個以空白方塊構成的無環路徑
(2)從入口出發,沿某一個方向進行探索,若能走通,則繼續向前走
(3)否則沿原路返回,換一個方向再進行探索,直到所有可能的通路都探索到爲止

四、隊列

1、隊列及其抽象數據類型
(1)隊列是一種只允許在表的一端進行插入操作,而在另一端進行刪除操作的線性表

2、隊列的實現
(1)隊列實現時通常採用:順序表示、鏈路表示

3、隊列的溢出問題
(1)上溢:當隊列滿時,再作進隊操作
(2)下溢:當隊列爲空時,作刪除操作

4、隊列的應用—農夫過河
(1)題目
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
5、兩種不同的搜索策略
(1)廣度優先breadth_first搜索:使用隊列實現
(2)深度優先depth_first搜索:使用棧實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章