TOP
0
0
即日起~6/30,暑期閱讀書展,好書7折起
數據結構精講與習題詳解‧C語言版(簡體書)
滿額折

數據結構精講與習題詳解‧C語言版(簡體書)

商品資訊

人民幣定價:128 元
定價
:NT$ 768 元
優惠價
87668
缺貨無法訂購
相關商品
商品簡介
作者簡介
目次
書摘/試閱

商品簡介

本書是清華大學出版社出版的《數據結構(C語言版)》(第2版)的配套教材,對“數據結構”課程常用習題進行了解析,對許多不易通過自學理解的概念和知識做了深入講解,并針對“數據結構”課程的學習給出了指導性建議。本書覆蓋了數據結構與算法的主要知識點,共分為8章,包括數據結構緒論,線性表,棧和隊列,多維數組、字符串與廣義表,樹與二叉樹,圖,查找以及排序。每章劃分為多個知識點,首先給出知識點提要,歸納有關要點和容易忽略的細節;然后給出選擇題、判斷題、簡答題和算法題4種題型的典型習題。全書的題量為2840題。

本書既可以作為大學計算機科學與技術、軟件工程等專業的本科生學習“數據結構”課程的輔助教材,也可供考研人員自學參考。


作者簡介

殷人昆 清華大學計算機系教授,1985年赴日本國東京理科大學做訪問學者,研究方向為軟件工程過程的質量管理和軟件產品的質量評價。主要教學工作為計算機系大學本科“數據結構”、“軟件工程”和研究生“軟件工程設計與技術”、“軟件項目管理”課程負責人,主持教育部-微軟精品課程“數據結構”的建設。曾與人合作或單獨編寫和出版教材20余部,其中,《數據結構》教材被評為教育部普通高等教育“十一五”國家級規劃教材,并于2005年獲“北京市精品教材”。曾在核心刊物和專業會議發表論文多篇,并參加或主持多項科研項目。

目次

數據結構精講與習題詳解(C語言版)(第2版)目錄目錄

第1章數據結構緒論1

1.1數據結構的概念及分類1

1.1.1知識點提要1

1.1.2選擇題3

1.1.3判斷題4

1.1.4簡答題5

1.1.5算法題8

1.2算法設計與算法分析10

1.2.1知識點提要10

1.2.2選擇題13

1.2.3判斷題17

1.2.4簡答題18

1.2.5算法題25

第2章線性表30

2.1線性表的概念30

2.1.1知識點提要30

2.1.2選擇題31

2.1.3判斷題32

2.1.4簡答題32

2.1.5算法題33

2.2順序表34

2.2.1知識點提要34

2.2.2選擇題36

2.2.3判斷題37

2.2.4簡答題38

2.2.5算法題39

2.3線性表的鏈接存儲表示49

2.3.1知識點提要49

2.3.2選擇題51

2.3.3判斷題55

2.3.4簡答題56

2.3.5算法題57

2.4兩種存儲表示的比較87

2.4.1知識點提要87

2.4.2選擇題88

2.4.3判斷題89

2.4.4簡答題90

2.4.5算法題91

2.5線性表的應用94

2.5.1知識點提要94

2.5.2選擇題97

2.5.3判斷題98

2.5.4簡答題98

2.5.5算法題100

第3章棧和隊列119

3.1棧119

3.1.1知識點提要119

3.1.2選擇題122

3.1.3判斷題126

3.1.4簡答題126

3.1.5算法題131

3.2隊列138

3.2.1知識點提要138

3.2.2選擇題142

3.2.3判斷題145

3.2.4簡答題145

3.2.5算法題150

3.3棧與隊列的應用160

3.3.1知識點提要160

3.3.2選擇題161

3.3.3判斷題162

3.3.4簡答題163

3.3.5算法題168

3.4棧與遞歸188

3.4.1知識點提要188

3.4.2選擇題190

3.4.3判斷題192

3.4.4簡答題193

3.4.5算法題196

第4章多維數組、字符串與廣義表211

4.1多維數組211

4.1.1知識點提要211

4.1.2選擇題213

4.1.3判斷題215

4.1.4簡答題215

4.1.5算法題218

4.2特殊矩陣與稀疏矩陣242

4.2.1知識點提要242

4.2.2選擇題244

4.2.3判斷題246

4.2.4簡答題247

4.2.5算法題257

4.3字符串272

4.3.1知識點提要272

4.3.2選擇題275

4.3.3判斷題277

4.3.4簡答題278

4.3.5算法題282

4.4廣義表298

4.4.1知識點提要298

4.4.2選擇題299

4.4.2判斷題300

4.4.3簡答題301

4.4.4算法題305

第5章樹與二叉樹317

5.1樹的基本概念317

5.1.1知識點提要317

5.1.2選擇題319

5.1.3判斷題320

5.1.4簡答題321

5.1.5算法題322

5.2二叉樹及其存儲表示323

5.2.1知識點提要323

5.2.2選擇題326

5.2.3判斷題329

5.2.4簡答題330

5.2.5算法題334

5.3二叉樹的遍歷339

5.3.1知識點提要339

5.3.2選擇題342

5.3.3判斷題346

5.3.4簡答題347

5.3.5算法題357

5.4線索二叉樹396

5.4.1知識點提要396

5.4.2選擇題397

5.4.3判斷題400

5.4.4簡答題400

5.4.5算法題402

5.5樹與森林的存儲與遍歷412

5.5.1知識點提要412

5.5.2選擇題415

5.5.3判斷題417

5.5.4簡答題418

5.5.5算法題423

5.6Huffman樹439

5.6.1知識點提要439

5.6.2選擇題442

5.6.3判斷題443

5.6.4簡答題444

5.6.5算法題449

5.7堆453

5.7.1知識點提要453

5.7.2選擇題456

5.7.3判斷題457

5.7.4簡答題457

5.7.5算法題460

5.8并查集466

5.8.1知識點提要466

5.8.2選擇題468

5.8.3判斷題469

5.8.4簡答題469

5.8.5算法題471

第6章圖473

6.1圖的基本概念473

6.1.1知識點提要473

6.1.2選擇題474

6.1.3判斷題476

6.1.4簡答題477

6.1.5算法題481

6.2圖的存儲表示482

6.2.1知識點提要482

6.2.2選擇題487

6.2.3判斷題489

6.2.4簡答題490

6.2.5算法題496

6.3圖的遍歷517

6.3.1知識點提要517

6.3.2選擇題519

6.3.3判斷題521

6.3.4簡答題522

6.3.5算法題528

6.4最小生成樹556

6.4.1知識點提要556

6.4.2選擇題557

6.4.3判斷題559

6.4.4簡答題559

6.4.5算法題568

6.5最短路徑577

6.5.1知識點提要577

6.5.2選擇題579

6.5.3判斷題580

6.5.4簡答題580

6.5.5算法題585

6.6拓撲排序和關鍵路徑597

6.6.1知識點提要597

6.6.2選擇題600

6.6.3判斷題602

6.6.4簡答題603

6.6.5算法題609

第7章查找617

7.1查找的概念與簡單查找方法617

7.1.1知識點提要617

7.1.2選擇題622

7.1.3判斷題626

7.1.4簡答題626

7.1.5算法題637

7.2二叉查找樹647

7.2.1知識點提要647

7.2.2選擇題650

7.2.3判斷題652

7.2.4簡答題653

7.2.5算法題658

7.3AVL樹672

7.3.1知識點提要672

7.3.2選擇題676

7.3.3判斷題678

7.3.4簡答題679

7.3.5算法題684

7.4B樹與B+樹691

7.4.1知識點提要691

7.4.2選擇題696

7.2.3判斷題699

7.4.4簡答題699

7.4.5算法題709

7.5散列法715

7.5.1知識點提要715

7.5.2選擇題720

7.5.3判斷題724

7.5.4簡答題725

7.5.5算法題734

第8章排序746

8.1排序的概念746

8.1.1知識點提要746

8.1.2選擇題748

8.1.3判斷題749

8.1.4簡答題749

8.1.5算法題751

8.2插入排序752

8.2.1知識點提要752

8.2.2選擇題754

8.2.3判斷題756

8.2.4簡答題756

8.2.5算法題761

8.3交換排序767

8.3.1知識點提要767

8.3.2選擇題769

8.3.3判斷題772

8.3.4簡答題772

8.3.5算法題779

8.4選擇排序794

8.4.1知識點提要794

8.4.2選擇題796

8.4.3判斷題798

8.4.4簡答題798

8.4.5算法題804

8.5歸并排序810

8.5.1知識點提要810

8.5.2選擇題811

8.5.3判斷題812

8.5.4簡答題812

8.5.5算法題815

8.6桶排序823

8.6.1知識點提要823

8.6.2選擇題827

8.6.3判斷題827

8.6.4簡答題828

8.6.5算法題829

8.7內排序方法的比較834

8.7.1知識點提要834

8.7.2選擇題836

8.7.3判斷題838

8.7.4簡答題839

8.7.5算法題842

8.8外排序847

8.8.1知識點提要847

8.8.2選擇題854

8.8.3判斷題856

8.8.4簡答題857

8.8.5算法題874

參考文獻887


書摘/試閱

第3章棧 和 隊 列〖1〗本章的知識結構圖棧和隊列的知識結構圖如圖31所示。本章的主要知識點有六個,即棧的概念與存儲表示、隊列的概念與存儲表示、棧的應用、隊列的應用、棧和遞歸、特殊隊列(包括雙端隊列和優先級隊列)。

圖31棧和隊列的知識結構圖

3.1棧〖*4/5〗3.1.1知識點提要1. 棧的定義及基本運算

(1) 棧(stack)可定義為只允許在表的末端進行插入和刪除的線性表。允許插入和刪除的一端叫做棧頂(top),而不允許插入和刪除的另一端叫做棧底(bottom)。當棧中沒有任何元素時則成為空棧。

(2) 棧只能通過棧頂進行訪問,故棧叫做后進先出(Last In First Out,LIFO)或先進后出(First In Last Out,FILO)的線性表。

(3) 棧的基本運算包括以下5種:

 棧初始化void initStack (Stack& S): 創建一個空棧S并使之初始化。

 判棧空否int StackEmpty (Stack& S): 當棧S為空時函數返回1,否則返回0。

 進棧int Push (Stack& S,type x): 當棧S未滿時,函數將元素x加入并使之成為新的棧頂。若操作成功,則函數返回1,否則函數返回0。

 出棧int Pop (Stack& S,type& x): 當棧S非空時,函數將棧頂元素從棧中退出并通過引用參數x返回退出元素的值。若操作成功,則函數返回1,否則函數返回0。

 讀棧頂元素int getTop (Stack& S,type& x): 當棧S非空時,函數將通過引用參數x返回棧頂元素的值(但不退出)。若操作成功,則函數返回1,否則函數返回0。

利用上述5種基本運算,可以實現基于棧結構的應用問題的求解。

注意,棧操作Pop(S,x)與getTop(S,x)是有區別的。前者退出棧頂的元素;后者僅復制出一份棧頂元素,棧中元素個數不發生變化。

2. 棧的混洗(shuffle)

(1) 當一串元素通過棧時,出棧元素的次序如何排列,與進棧和出棧操作的排列組合有關。如果每個元素進棧后立即出棧,所有出棧元素的排列與進棧順序完全相同;如果所有元素都進棧后才開始出棧,所有出棧元素的排列與進棧順序完全顛倒。

(2) 棧的進出規則: 利用鐵路調車軌道的棧式結構分析,當列車車廂按照1,2,…,n的編號進棧時,可能的不同出棧序列數目可利用catalan函數算出: 1n+1Cn2n=1n+1×(2n)!n!×n!3. 棧的順序存儲結構

棧的順序存儲,簡稱順序棧,是指用一組地址連續的存儲單元依次存儲棧中元素,同時附設指針top指示棧頂元素。

(1) 順序棧的存儲分配有兩種:

① 順序棧的靜態存儲分配,它的存儲數組采用靜態方式定義。#define maxSize 100

typedef char SElemType;

typedef struct {

SElemType elem\[maxSize\];

int top;

} SeqStack;順序棧的靜態存儲結構預先定義或申請棧的存儲空間,一旦裝滿就不能擴充。因此在順序棧中,當一個元素進棧之前,需要判斷是否棧滿,若棧滿,則元素進棧會發生上溢現象。

② 順序棧的動態存儲分配,它的存儲數組在使用時動態存儲分配,其好處是一旦棧滿可以擴充。順序棧的動態存儲結構定義如下(保存于SeqStack.h): #define initSize 100

typedef char SElemType;

typedef struct {

SElemType elem;

int maxSize,top;

} SeqStack;在初創基于動態存儲分配的順序棧時必須立即為它動態分配存儲空間: elem=(SElemType)malloc(initSizesizeof(SELemType))并以initSize作為最初的maxSize。在擴充時需要申請一個新的具有2×maxSize的連續的存儲空間取代原來的存儲空間,把原來存儲空間內存放的所有棧元素轉移到新的存儲空間后釋放原來的存儲空間,再讓elem指針指示新的存儲空間,并讓maxSize=2×maxSize。

(2) 進棧和出棧的處理。有兩種進棧和出棧的處理方式。

 先讓棧頂指針進一,再按棧頂指針所指位置把進棧元素加入。這樣,棧頂是最后加入元素所處的位置。它的示意圖參看圖32。

圖32順序棧的示意圖之一

按照這種處理方式,在使用棧之前需要做初始化工作,即置空棧。因為一維數組下標從0開始,棧空時應該top<0,因此空棧時棧頂指針top=-1。

 先按棧頂指針所指位置把進棧元素加入,再把棧頂指針加一。這樣,棧頂是最后加入元素的下一位置,是下一次加入元素的位置。它的示意圖參看圖33。

圖33順序棧的示意圖之二

按照這種處理方式,空棧時應該top=0。本書采用前一種處理方式。

(3) 兩個順序棧共享一個存儲空間。

利用棧底位置相對不變的特性,可讓兩個順序棧共享一個一維存儲空間,以調劑余缺,實現方法是: 將兩個棧的棧底位置分別設在存儲空間的兩端,讓它們的棧頂各自向中間延伸,如圖34所示。這樣,兩個棧的空間就可以相互調劑,只有在整個存儲空間被占滿時才發生上溢,這樣產生上溢的概率要小得多。

圖34兩個棧共享一個存儲空間的結構示意圖

若設0號棧的棧底指針為b[0],棧頂指針為t[0];1號棧的棧底指針為b[1],棧頂指針為t[1],則各棧初始化的條件為b[0]=t[0]=-1,b[1]=t[1]=maxSize;各棧判棧空的條件為t[0]==b[0] 和t[1]==b[1]。判棧滿的條件為t[0]+1==t[1],注意,絕對不是t[0]+t[1]==maxSize。

4. 棧的鏈式存儲結構


您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 668
缺貨無法訂購

暢銷榜

客服中心

收藏

會員專區