資料結構C語言描述耿國華習題及答案

2022-05-06 04:27:03 字數 2902 閱讀 2610

第一章習題答案

2、××√

3、(1)包含改變量定義的最小範圍(2)資料抽象、資訊隱蔽

(3)資料物件、物件間的關係、一組處理資料的操作

(4)指標型別

(5)集合結構、線性結構、樹形結構、圖狀結構

(6)順序儲存、非順序儲存

(7)一對

一、一對多、多對多

(8)一系列的操作

(9)有限性、輸入、可行性

4、(1)a(2)c(3)d

5、語句頻度為1+(1+2)+(1+2+3)+…+(1+2+3+…+n)

第二章習題答案

1、(1)一半,插入、刪除的位置

(2)順序和鏈式,顯示,隱式

(3)一定,不一定

(4)頭指標,頭結點的指標域,其前驅的指標域

2、(1)a(2)a:e、a

b:h、l、i、e、a

c:f、m

d:l、j、a、g或j、a、g

(3)d(4)d(5)c(6)a、c

3、頭指標:指向整個鍊錶首位址的指標,標示著整個單鏈表的開始。

頭結點:為了操作方便,可以在單鏈表的第乙個結點之前附設乙個結點,該結點的資料域可以儲存一些關於線性表長度的附加資訊,也可以什麼都不存。

首元素結點:線性表中的第乙個結點成為首元素結點。

4、演算法如下:

int linser(seqlist *l,int x)

5、演算法如下:

#define ok 1

#define error 0

int ldel(seqlist *l,int i,int k)

if((i+k)==(l->last+2))

else

}8、演算法如下:

#define ok 1

#define error 0

int delet(linklist l,int mink,int maxk)

else

}9、演算法如下:

int dele(node *s)

else

else

while(p->next->next!=s)

p=p->next;

p->next=s;

free(p);

return 1;

} }

}第三章習題答案

2、(1)

3、棧有順序棧和鏈棧兩種儲存結構。

在順序棧中,棧頂指標top=-1時,棧為空;棧頂指標top=stacksize-1時,棧為滿。

在帶頭結點鏈棧中,棧頂指標top-〉 next=null,則代表棧空;只要系統有可用空間,鏈棧就不會出現溢位,既沒有棧滿。

5、#include<>

#include ""

void main( )

while(ch!='@'&&!isempty(&s))

if(!isempty(&s))

printf("no!\n");

else

}12、(1)功能:將棧中元素倒置。

(2)功能:刪除棧中的e元素。

(3)功能:將佇列中的元素倒置。

第五章習題答案

1、(1)陣列a共占用48*6=288個位元組;

(2)陣列a的最後乙個元素的位址為1282;

(3)按行儲存時loc(a36)=1000+[(3-1)*8+6-1]*6=1126

(4)按列儲存時loc(a36)=1000+[(6-1)*6+3-1]*6=1192

9、(1)(a,b)(2)((c,d))(3)(b)(4)b(5)(d)

10、d

第六章習題答案

1、三個結點的樹的形態有兩個;三個結點的二叉樹的不同形態有5個。

3、證明:分支數=n1+2n2+…+knk1)

n= n0+n1+…+nk2)

n=分支數+13)

將(1)(2)代入(3)得

n0= n2+2n3+3n4+…+(k-1)nk+1

4、注:c結點作為d的右孩子(畫圖的時候忘記了,不好意思)

5、n0=50,n2=n0-1=49,所以至少有99個結點。

6、(1)前序和後序相同:只有乙個結點的二叉樹

(2)中序和後序相同:只有左子樹的二叉樹

(3)前序和中序相同:只有右子樹的二叉樹

7、證明:∵n個結點的k叉樹共有nk個鏈域,分支數為n-1(即非空域)。

空域=nk-(n-1)=nk-n+1

8、對應的樹如下:

9、(答案不唯一)

哈夫曼樹如下圖所示:

哈夫曼編碼如下:

頻率編碼

0.07 0010

0.19 10

0.02 00000

0.06 0001

0.32 01

0.03 00001

0.21 11

0.10 0011

11、對應的二叉樹如下:

12、求下標分別為i和j的兩個桔點的最近公共祖先結點的值。

typedef int elemtype;

void ancestor(elemtype a,int n,int i,int j)

15、編寫遞迴演算法,對於二叉樹中每乙個元素值為x的結點,刪去以它為根的子樹,並釋放相應的空間。

void del_sub(bitree t)

void del_sub_x(bitree t,int x)

}22、

int width(bitree bt)

{if (bt==null) return (0);

else

{bitree p,q[50];

int front=1,rear=1,last=1;

int temp=0, maxw=0;

q[rear]=bt

while(front<=last)

資料結構C語言描述耿國華習題及答案

第一章習題答案 2 3 1 包含改變量定義的最小範圍 2 資料抽象 資訊隱蔽 3 資料物件 物件間的關係 一組處理資料的操作 4 指標型別 5 集合結構 線性結構 樹形結構 圖狀結構 6 順序儲存 非順序儲存 7 一對 一 一對多 多對多 8 一系列的操作 9 有限性 輸入 可行性 4 1 a 2 ...

資料結構 C語言描述 2章習題答案

第一章習題 2 3 1 包含改變量定義的最小範圍 2 資料抽象 資訊隱蔽 3 資料物件 物件間的關係 一組處理資料的操作 4 指標型別 5 集合結構 線性結構 樹形結構 圖狀結構 6 順序儲存 非順序儲存 7 一對 一 一對多 多對多 8 一系列的操作 9 有限性 輸入 可行性 4 1 a 2 c ...

資料結構C語言習題及解答

第二章習題與解答 一判斷題 1 線性表的邏輯順序與儲存順序總是一致的。2 順序儲存的線性表可以按序號隨機訪問。3 順序表的插入和刪除操作不需要付出很大的時間代價,因為每次操作平均只有近一半的元素需要移動。4 線性表中的元素可以是各種各樣的,但同一線性表中的資料元素具有相同的特性,因此是屬於同一資料物...