icoding 陣列與廣義表 習題

2021-10-08 04:27:46 字數 2879 閱讀 2754

#define maxsize 100          

//假設非零元個數的最大值為100

typedef

struct

triple;

typedef

struct

tsmatrix;

在三元組中,i 和 j 從 1 開始計數,與數學中矩陣元素的編號一致

矩陣加法函式的原型為:

bool

add_matrix

(const tsmatrix *pm,

const tsmatrix *pn, tsmatrix *pq)

;

pm, pn, pq 分別指向三個矩陣,當 pm 和 pn 兩個矩陣不可加時,函式返回 false,否則函式返回 true,且 pq 指向兩個矩陣的和。

答案**:

#include

"tsmatrix.h"

#include

#include

bool

add_matrix

(const tsmatrix* pm,

const tsmatrix* pn, tsmatrix* pq)

int a =

0, b =

0, c =0;

pq->len =0;

pq->m == pm-

>m;

pq->n == pm-

>n;

while

(a < pm-

>len && b < pn-

>len && c < maxsize)

else

if(pm-

>data[a]

.i == pn-

>data[b]

.i)else

if(pm-

>data[a]

.j == pn-

>data[b]

.j)else

}else

if(pm-

>data[a]

.j < pn-

>data[b]

.j)}

else

if(pm-

>data[a]

.i > pn-

>data[b]

.i)}

if(a < pm-

>len)

}else

if(b < pn-

>len)

}return

true

;}

typedef

int elemtype;

// 非零元素結點結構

typedef

struct olnode

olnode,

*olink;

// 十字鍊錶結構

typedef

struct

crosslist,

*pcrosslist;

1)實現十字鍊錶的初始化操作:

int

init_cross_list

(pcrosslist l,

const elemtype *a,

int m,

int n)

;

其中 l 指向 crosslist 結構,且各成員已被初始化為0;

a 為 elemtype 型別陣列中第乙個元素的位址,元素的個數為 m×n 個,按行優先儲存(即a[0] 為十字鍊錶第1行第1列的元素;

a[1] 為第1行第2列的元素,a[n] 為第2行第1列的元素,a[n+1] 為第2行第2個元素);

m 表示十字鍊錶的行數,n 表示十字鍊錶的列數。

init_cross_list 函式將 elemtype 陣列中非0元素儲存到十字鍊錶中,函式返回非 0 元素的個數。

答案**:

#include

"crosslist.h"

#include

#include

intinit_cross_list

(pcrosslist l,

const elemtype* a,

int m,

int n)

else

else

j = p-

>col;

if(l-

>colhead[j]

==null

)else

num++;}

} l-

>nums = num;

return num;

}

2)實現十字鍊錶的刪除操作:

int

del_cross_list

(pcrosslist l, elemtype k)

;

其中 l 指向 要處理的 crosslist 結構,k 為要刪除的元素;

del_cross_list 函式刪除十字鍊錶中所有值為 k 的結點,並返回刪除結點的個數。

答案**:

int

del_cross_list

(pcrosslist l, elemtype k)

for(p = l-

>rowhead[i]

; p !=

null

; p = p-

>right)

else

}else

else

} t++

; l-

>nums--;}

}}return t;

}

陣列和廣義表習題

設有陣列 a i,j 陣列的每個元素長度為 3 位元組,i 的值為 1 到 8 j 的值為 1 到 10,陣列從記憶體首位址 ba 開始順序存放,當用以列為主存放時,元素 a 5,8 的儲存首位址為?答案 ba 180。畫出矩陣圖,先算整列8 7,再算剩餘的5個。ba 8 7 5 1 3 ba 18...

廣義表和串 習題

已知head tail head s head tail tail s a 廣義表 s 滿足上式,則 s 為 a.a,b b,a b.b,a a b c.a a,b b d.b,a a,b e.a b b,a f.b b,a a 解 廣義表 的表頭是 表尾是 a.b.nil c.d.解 a,a。ni...

陣列和廣義表

一 陣列 陣列是一組型別相同的資料元素構成。有一維陣列 二維陣列 n 維陣列。一般實現時,可以過載操作符,比較方便一點。二 矩陣 1 矩陣的加減,需要兩個矩陣擁有相同的行列數才可以。對應各個位置分別進行計算 2 矩陣的相乘,需要第乙個陣的列數等於第二個的行數。如c 0,0 a 的第一列分別乘以 b的...