}k++;n++;
}else if(a.data[k].i
else
}if(k>a.tu)
while(n<=b.tu)
else
while(k<=a.tu)
c.mu=a.mu;
c.nu=a.nu;
c.tu=p-1;
return true;
}5.23② 三元組表的一種變型是,從三元組表中去掉
行下標域得到二元組表,另設乙個行起始向量,其每
個分量是二元組表的乙個下標值,指示該行中第乙個
非零元素在二元組表中的起始位置。試編寫乙個演算法,
由矩陣元素的下標值i,j求矩陣元素。試討論這種方
法和三元組表相比有什麼優缺點。
要求實現以下函式:
status getelem(t2**atrix m, int i, int j, elemtype &e);
/* 求二元組矩陣的元素a[i][j]的值e */
稀疏矩陣的二元組順序表+行起始向量的型別t2**atrix的定義:
typedef structtwotuples;
typedef struct t2**atrix; // 二元組矩陣型別
status getelem(t2**atrix m, int i, int j, elemtype &e)
/* 求二元組矩陣的元素a[i][j]的值e */
}e=0;
return ok;
}5.26③ 試編寫乙個以三元組形式輸出用十字鍊錶
表示的稀疏矩陣中非零元素及其下標的演算法。
要求實現以下函式:
void outc**(crosslist m, void(*out3)(int, int, int));
/* 用函式out3,依次以三元組格式輸出十字鍊錶表示的矩陣 */
稀疏矩陣的十字鍊錶儲存表示:
typedef struct olnode olnode, *olink;
typedef struct crosslist;
void outc**(crosslist m, void(*out3)(int, int, int))
/* 用函式out3,依次以三元組格式輸出十字鍊錶表示的矩陣 */
}5.30③ 試按表頭、表尾的分析方法重寫求廣義表
的深度的遞迴演算法。
要求實現以下函式:
int glistdepth(glist ls);
/* return the depth of list */
廣義表型別glist的定義:
typedef enum elemtag;
typedef struct glnode ptr;
}un;
} *glist;
int glistdepth(glist ls)
/* return the depth of list */
return max+1;
}5.32④ 試編寫判別兩個廣義表是否相等的遞迴演算法。
要求實現以下函式:
status equal(glist a, glist b);
/* 判斷廣義表a和b是否相等,是則返回true,否則返回false */
廣義表型別glist的定義:
typedef enum elemtag;
typedef struct glnode ptr;
}un;
} *glist;
status equal(glist a, glist b)
/* 判斷廣義表a和b是否相等,是則返回true,否則返回false */
5.33④ 試編寫遞迴演算法,輸出廣義表中所有原子項
及其所在層次。
要求實現以下函式:
void outatom(glist a, int layer, void(*out2)(char, int));
/* 遞迴地用函式out2輸出廣義表的原子及其所在層次,layer表示當前層次 */
廣義表型別glist的定義:
typedef enum elemtag;
typedef struct glnode ptr;
}un;
} *glist;
void outatom(glist a, int layer, void(*out2)(char, int))
/* 遞迴地用函式out2輸出廣義表的原子及其所在層次,layer表示當前層次 */
}5.18⑤ 試設計乙個演算法,將陣列a中的元素
a[0..n-1]迴圈右移k位,並要求只用乙個元素
大小的附加儲存,元素移動或交換次數為o(n)。
要求實現以下函式:
void rotate(array1d &a, int n, int k);
一維陣列型別array1d的定義:
typedef elemtype array1d[maxlen];
void rotate(array1d &a, int n, int k)
資料結構第五章樹答案
第五章樹 答案 一 選擇題 1 二叉樹的第i層最多有 個結點。a 2i b.2ic.2i 1d.2i 1 2.對於一棵滿二叉樹,高度為h,共有n個結點,其中有m個葉子結點,則 a n h m b.h m 2n c.m h 1d.n 2h 1 3.在一棵二叉樹中,共有16個度為2的結點,則其共有個葉子...
資料結構作業系統答案
2.11 設順序表l中的資料元素遞增有序。試寫一演算法,將x插入到l的適當位置上,並保 持該表的有序性。要求實現下列函式 void insertorderlist sqlist l,elemtype x 在有序的順序表 l 中保序插入資料元素 x 順序表型別定義如下 typedef struct s...
資料結構習題第五章
5.1 選擇題 1 一維陣列和線性表的區別是 a a 前者長度固定,後者長度可變 b 後者長度固定,前者長度可變 c 兩者長度均固定d 兩者長度均可變 2 設w為乙個二維陣列,其每個資料元素wij 占用6個位元組,行下標i從0到8,列下標j從2到5,則二維陣列w的資料元素共占用 c 個位元組。a 4...