#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的...