http://wenku..com/search?word=%CA%FD%BE%DD%BD%E1%B9%B9%D3%EB%CB%E3%B7%A8%B7%D6%CE%F6+C%2B%2B%D3%EF%D1%D4%C3%E8%CA%F6+%BB%C6%B4%EF%C3%F7&lm=0&od=0
要是不能下載我給你傳一份,QQ:136051720
㈡ 《數據結構與演算法分析Java語言描述(英文版·第3版)》pdf下載在線閱讀全文,求百度網盤雲資源
《數據結構與演算法分析》(韋斯 (Mark Allen Weiss))電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/16U515Qc19aWl8uQBXmRJKw
書名:數據結構與演算法分析
作者:韋斯 (Mark Allen Weiss)
出版社:機械工業出版社
出版年份:2013-2-1
頁數:614
內容簡介:
本書是國外數據結構與演算法分析方面的經典教材,使用卓越的Java編程語言作為實現工具討論了數據結構(組織大量數據的方法)和演算法分析(對演算法運行時間的估計)。
隨著計算機速度的不斷增加和功能的日益強大,人們對有效編程和演算法分析的要求也不斷增長。本書將演算法分析與最有效率的Java程序的開發有機地結合起來,深入分析每種演算法,並細致講解精心構造程序的方法,內容全面、縝密嚴格。
作者簡介:
Mark Allen Weiss佛羅里達國際大學計算與信息科學學院教授、副院長,本科教育主任和研究生教育主任。他於1987年獲得普林斯頓大學計算機科學博士學位,師從Bob Sedgewick。 他曾經擔任全美AP(Advanced Placement)考試計算機學科委員會的主席(2000—2004)。他的主要研究興趣是數據結構、演算法和教育學。
㈢ 《數據結構(C語言版)》pdf下載在線閱讀,求百度網盤雲資源
《數據結構(C語言版)》(嚴蔚敏)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1BmtD5k3mLtJZO36Xw_Hq3w
書名:數據結構(C語言版)
作者:嚴蔚敏
豆瓣評分:6.1
出版社:清華大學出版社
出版年份:2012-5
頁數:335
內容簡介:
《數據結構》(C語言版)是為「數據結構」課程編寫的教材,也可作為學習數據結構及其演算法的C程序設計的參數教材。
本書的前半部分從抽象數據類型的角度討論各種基本類型的數據結構及其應用;後半部分主要討論查找和排序的各種實現方法及其綜合分析比較。其內容和章節編排1992年4月出版的《數據結構》(第二版)基本一致,但在本書中更突出了抽象數據類型的概念。全書採用類C語言作為數據結構和演算法的描述語言。
本書概念表述嚴謹,邏輯推理嚴密,語言精煉,用詞達意,並有配套出版的《數據結構題集》(C語言版),便於教學,又便於自學。
本書後附有光碟。光碟內容可在DOS環境下運行的以類C語言描述的「數據結構演算法動態模擬輔助教學軟體,以及在Windows環境下運行的以類PASCAL或類C兩種語言描述的「數據結構演算法動態模擬輔助教學軟體」。
本書可作為計算機類專業或信息類相關專業的本科或專科教材,也可供從事計算機工程與應用工作的科技工作者參考。
作者簡介:
嚴蔚敏 清華大學計算機系教授,長期從事數據結構教學和教材建設,和吳偉民合作編著的《數據結構》曾獲「第二屆普通高等學校優秀教材全國特等獎」和「1996年度國家科學技術進步獎三等獎」。
吳偉民 廣東工業大學計算機學院副教授,碩士生導師。廣東省計算機學會圖像圖形分會秘書長。長期從事數據結構教學和系列教材建設。主要研究領域:數據結構和演算法、可是計算、編譯和虛擬機技術、智能系統等。和嚴蔚敏合作編著的《數據結構》曾獲「第二屆普通高等學校優秀教材全國特等獎」和「1996年度國家科學技術進步獎三等獎」。
㈣ 《數據結構與演算法分析c語言描述第二版》pdf下載在線閱讀全文,求百度網盤雲資源
《數據結構與演算法分析c語言描述第二版》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1pwAZtrL3TpHKkKbWzUTV6w
㈤ 數據結構與演算法分析 C語言 馮舜璽
你用迅雷搜,能搜到就有,搜不到就沒有
另:不是所有書本都有電子版的.
㈥ 《數據結構與演算法分析( C++版)(第二版)國外計算機科學教材系列》txt下載閱讀,求百度雲資源
《數據結構與演算法分析(C++版)(第二版)》([美] Clifford A.Shaffer)電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/1DBcf3gNP9u5VdIJWPS5n6w
書名:數據結構與演算法分析(C++版)(第二版)
作者:[美] Clifford A.Shaffer
譯者:張銘
豆瓣評分:7.1
出版社:電子工業出版社
出版年份:2002-6
頁數:327
內容簡介:
本書採用程序員最愛用的面向對象C+ +語言來描述數據結構和演算法,並把數據結構原理和演算法分析技術有機地結合在一起,系統介紹了各種類型的數據結構和排序、檢索的各種方法。作者非常注意對每一種數據結構不同存儲方法及有關演算法進行分析比較。書中還引入了一些比較高級的數據結構與先進的演算法分析技術,並介紹了可計算性理論的一般知識。本版的重要改進在於引入了參數化的模板,從而提高了演算法中數據類型的通用性,支持高效的代碼重用。本書概念清楚、邏輯性強、內容新穎,可作為大專院校計算機軟體專業與計算機應用專業學生的教材和參考書,也可供計算機工程技術人員參考。
作者簡介:
Associate Professor
2000A Torgerson
Department of Computer Science
Virginia Tech
Blacksburg, VA 24061
㈦ 數據結構與演算法分析 —— C 語言描述:分離鏈接法
分離鏈接法(separate chaining)是解決哈希沖突的一種簡單方法,其做法是將散列到同一個值的所有元素保留在一個表中。為方便起見,這些表都有表頭。如果空間很緊,則更可取的方法是避免使用這些表頭。本文假設關鍵字是前 10 個完全平方數並設散列函數就是 。(表的大小不是素數,用在這里是為了簡單起見)。
為執行 Find ,我們使用散列函數來確定究竟考察哪個表。此時我們以通常的方式遍歷該表並返回所找到的被查找項所在位置。為執行 Insert,我們遍歷一個相應的表以檢查該元素是否已經處在適當的位置(如果要插入重復元,那麼通常要留出一個額外的域,這個域當重復元出現時增 1)。如果這個元素是個新的元素,那麼或者插入到表的前端,或者插入到表的末尾,哪個容易就執行哪個。當編寫程序的時候這是最容易尋找的一種。有時將元素插入到表的前端不僅因為方便,而且還因為新近插入的元素最有可能最先被訪問。
實現分離鏈接法所需要的類型如下:
上面程式碼中的 ListNode 結構與鏈式表聲明相同。程式碼中散列表結構包含一個鏈表數組(以及數組中的鏈表的個數),它們在散列表結構初始化時動態分配空間。此處的 HashTable 類型就是指向該結構的指針類型。
注意,TheList 域實際上是一個指向指向 ListNode 結構的指針的指針。如果不使用這些 typedef,那可能會相當混亂。
初始化函數如下:
它用到與棧的數組實現中相同的想法。第 4~6 行給一個散列表分配空間。如果空間允許,則 H 將指向一個結構,該結構包含一個整數和指向一個表的指針。第裂脊 7 行設置表的大小為一素數,而第 8~10 行則試圖指定 List 的一個數組。由於 List 被定義為一個指針,因此結果為指針的數組。
假如 List 的實現不用表頭,那麼我們就可以到此為止了。但是我們使用了表頭,因此必須給每個表分配一個表頭並設置它的 Next 域為 NULL。這由第 11~15 行實現。當然,第 12~15 行可以用語句
代替。雖然我們沒有選擇使用這條語句,但是因為該例中它勝過使程序盡可能自包含,所以它當然值得考慮。這個程序的一個低效之處在於第 12 行上的 malloc 執行了 H→TableSize 次。這可以通過在循環出現之前調用一次 malloc 操作
代替第 12 行來避免。第 16 行返回 H。
對 Find(Key, H) 的調用將返回一個指針,該指針指向包含 Key 的那個單元。實現它的程序如下:
注意,第 2~5 行等同於鏈表執行的 Find 程序。記住,如果 ElementType 是一個字元串,那比較和賦值必須相應地使用 strcpm 和 strcpy 來進行。
下面是一個插入常式:
如果要插入的項已經存在,那麼我們就什麼也不做;否則我們把它放到表的前端。該元素可以放在表的任何地方,此處這樣做是最方便的。注意,插入到表的前端的程序基本上等同於使用鏈表實現 Push 的程序。
上面的常式寫得多少有些不好,因為它計算了兩次散列函數。多餘的計算總是不好的,因此,如果這些散列常式真的構成程序運行時間的重要部分,那麼這個程序就應該重寫。
刪除常式是鏈表中的刪除操作的直接實現,如果在散列的諸常式中不包括刪除操作,那麼最好不要使用表頭,因為使用表頭不僅不能簡化問題而且還要浪費大量的空間。
除了鏈表外,任何的方案都有可能用來解決沖突現象 —— 一棵二叉查找樹甚至另外一個散列表均可勝任,但是我們期望如果表大,同時散列函數好,那麼所有的表就應該短,這樣就不至於進行任何復雜的嘗試了。
我們定義散列表的裝載因子(load factor)肆罩滲 為散列表中元素個數與散列表大小的比值。在本文的例子中, 。表的平均長度為 。執行一次查找所需要的工作是計算散列函數值所需要的常數時悶悉間加上遍歷表所用的時間。再一次不成功的查找中,遍歷的鏈接數平均為 (不包括最後的 NULL 鏈接)。成功的查找則需要遍歷大約 個鏈接;它保證必然會遍歷一個鏈接(因為查找是成功的),而我們也期望沿著一個表中途就能找到匹配的元素。這就指出,表的大小實際上並不重要,而裝載因子才是重要的。分離鏈接散列的一般法則是使得表的大小盡量與預料的元素個數差不多(換句話說,讓 )。因此,使表的大小是素數以保證一個好的分布,這也是一個好的想法。
關於對素數取模的好處,我們首先要知道素數是什麼?素數(質數)即只有兩個因數,分別為 1 和其本身。如果對一個合數取模(有兩個以上的因數),那麼對其某個因數取模,結果可能仍然一致。例如 10 對 8 取模,結果為 2,對 4 取模,結果也為 2。而我們對一個素數取模,由於素數只有 1 和其本身兩個素數,即不可能出現上述情形。
㈧ 求《數據結構與演算法分析---C語言描述》原書第二版的中文版課後答案,萬分感謝
數據結構與演算法分析:C語言描述(原書第2版).pdf
㈨ 數據結構與演算法分析 c語言秒速 csdn 好嗎
這里下載:數據結構題集(C語言版)高清PDF下載
㈩ 數據結構與演算法分析 —— C 語言描述:開放定址法
分離鏈接散列演算法的缺點是需要指針,由於給新單元分配地址需要時間,因此這就導致演算法的速度多少有些緩慢,同時演算法實際上還要求實現另一種數據結構。除使用鏈表解決沖突外,開放定址散列法(open addressing hashing)是另外一種用鏈表解決沖突的方法。在開放定址散列演算法系統中,如果有沖突發生,那麼就要嘗試選擇另外的單元,直到找出空的單元為止。更一般地,單元 相繼試選,其中 ,且 。函數 F 是沖突解決方法,因為所有的數據都要置入表內,所以開放定址散列法所需要的表要比分離鏈接散列用的表大。一般說來,對開放定址散列演算法來說,裝填因子應該低於 。開放定址散列法有三種常用的沖突解決辦法:
在線性探測法中,函數 F 是 的線性函數,典型的情形是 。這相當於逐個探測每個單元(必要時可以繞回)以查找出一個空空單元。即插入一個第一個沖突關鍵字,它將被放入下一個空閑地址,即地址 0,該地址是開放的。之後插入的沖突關鍵字,會對表進行試選,只要表足夠大,總能夠找到一個自由單元,但是如此花費的時間是相當多的。更糟的是,即使表相對較空棗中,這樣占據的單元也會開始形成一些區塊,其結果稱為一次聚集(primary clustering),於是,散列到區塊中的任何關鍵字都需要多次試選單元才能解決沖突,然後該關鍵字被添加到相應的區塊中。
可以證明,使用線性探測的預期探測次數對於插入和不成功的查找來說大約為 ,而對於成功的查找來說則是 。略加思考不難得出,成功查找應該比不成功查找平均花費較少的時間。
如果聚算不算是問題,那麼對應的公式就不難得到。我們假設有一個很大的表,並設每次探測都與前面的探測無關。對於隨機沖突解決辦法而言,這些假設是成立的,並且當 不是非常接近 1 時也是合理的。首先,我們導出在一次不成功查找中探測的期望次數,而這正是直到我們找到一個空單元的探測次數。由於空單元所佔的份額為 ,因此我們預計要探測的單元數是 。一次成功查找的探測次數等於該特定元素插入時所需要的探測次數。當一個元素被插入時,可以看成是一次不成功查找的結果。因此,我們可以使用一次不成功查找的開銷來計算一次成功查找的平均開銷。
需要指出, 在 0 到當前值之間的變化,因此早期的插入操作開銷較少,從而降低平均開銷。我可以通過使用積分計算插入時間平均值的方法來估計平均值,如此得到
這些公式顯然優於線性探測相應的公式,聚集不僅是理論上的問題,而且實際上也發生在具體的實現中。線性探測的預計探測次數與 呈正比,即 越小,插入操芹岩銷作平均次數越少。
平方探測是消除線性探測中一次聚集問題的沖突解決辦法。平方探測就是沖突函數為二次函數的探測方法。流行的選擇是 。
對於線性探測,讓元素幾乎填滿散列表並不是個好主意,因為此時表的性能會降低。對於平方探測情況甚至更糟:一旦表被填滿超過一半,當表的大小不是素數時甚至在表被填滿超過一半之前,就不能保證一次找到一個空單元了。這是因為最多有一半的表可以用作解決沖突的備選位置。
定理:如果使用平方探測,且表的大小是素數,那麼當表至少有一半是空的時候,總能夠插入一個新的元素。
哪怕表有比一半多一個的位置被填滿,那麼插入都有可能失敗(雖然這是非常難以見到的,但是把它記住很重要。)。另外,表的大小是素數也非常重要,如果表的大小不是素數,則備選單元的個數可能會銳減。
在開放定址散列表中,標準的刪除操作不能施行,因為相應的單元可能已經引起過沖突,元素繞過它存在了別處。例如,如果我們刪除一個沖突的中間元素,那麼實際上所有其他的 Find 常式都將不能正確運行。因此,開放嫌游定址散列表需要懶惰刪除,雖然在這種情況下並不存在真正意義上的懶惰。
開放定址散列表的類型聲明如下,這里,我們不用鏈表數組,而是使用散列表項單元的數組,與在分離鏈接散列中一樣,這些單元也是動態分配地址的。
初始化開放定址散列表的常式如下,由分配空間(第1~10行)及其後將每個單元的 Info 域設置為 Empty 組成。
使用平方探測散列法的 Find 常式如下。如果分裂鏈接散列法一樣, 將返回 Key 在散列表中的位置。如果 Key 不出現,那麼 Find 將返回最後的單元。該單元就是當需要時,Key 將被插入的地方。此外,因為被標記了 Empty,所以表達 Find 失敗很容易。為了方便起見,我們假設散列表的大小至少為表中元素個數的兩倍,因此平方探測方法總能夠實現。否則,我們就要在第 4 行前測試 。在下面的常式中,標記為刪除的那些元素被認為還在表內,這可能引起一些問題,因為該表可能提前過滿。
第 4~6 行為進行平方探測的快速方法。由平方解決函數的定義可知, ,因此,下一個要探測的單元可以用乘以 2(實際上就是進行一位二進制移位)並減 1 來確定。如果新的定位越過數組,那麼可以通過減去 TableSize 把它拉回到數組范圍內。這比通常的方法要快,因為它避免了看似需要的乘法和除法。注意一條重要的警告:第 3 行的測試順序很重要,切勿改變它。
下面的常式是插入。正如分離鏈接散列方法那樣,若 Key 已經存在,則我們就什麼也不做。其他工作只是簡單的修改。否則,我們就把要插入的元素放在 Find 常式指出的地方。
雖然平方探測排除了一次聚集,但是散列到同一位置上的那些元素將探測相同的備選單元。這叫做二次聚集(secondary clustering)。二次聚集是理論上的一個小缺憾,模擬結果指出,對每次查找,它一般要引起另外的少於一半的探測。
雙散列(double hashing)能夠解決平方探測中的二次聚集問題,不過也需要花費另外的一些乘法和除法形銷。對於雙散列,一種流行的選擇是 。這個公式是說,我們將第二個散列函數應用到 X 並在距離 , 等處探測。 選擇的不好將會是災難性的。
在雙散列時,保證表的帶下為素數是非常重要的。假設我們在插入一個關鍵字的時候,發現它已經引發沖突,就會選擇備選位置,如果表的大小不是素數,那麼備選單元就很有可能提前用完。然後,如果雙散列正確實現,則模擬表明,預期的探測次數幾乎和隨機沖突解決方法的情形相同。這使得雙散列理論上很有吸引力,不過,平方探測不需要使用第二個散列函數,從而在實踐中可能更簡單並且更快。