CH5 数组和广义表
滨州学院 庄波
\[k = \begin{cases} \dfrac{ i (i-1) }{ 2 } + j-1, & i \ge j, \\ \dfrac{ j (j-1) }{ 2 } + i-1, & i<j. \end{cases}\]
\[k = \begin{cases} \dfrac{ i (i-1) }{ 2 } + j-1, & i \ge j, \\ 0, & i<j. \end{cases}\]
\[k = \begin{cases} 0, & i < j, \\ \dfrac{ j (j-1) }{ 2 } + i-1, & i\le j. \end{cases}\]
/// 三元组
struct Triple {
int i,j; // 非零元的位置
E e; // 元素的值
};
/// 三元组顺序表
struct TSMatrix {
Triple data[MAXSIZE];
int mu, nu, tu; // 矩阵行数、列数和非零元数
}
算法:矩阵转置
时间复杂度:\(O(nu+tu)\)
/// 广义表结点
struct GLNode {
int tag; // ATOM=0 原子, LIST=1 子表
union {
E atom; // 原子结点的值
struct {
GLNode *hp, *tp; // 表头指针和表尾指针
} ptr; // 表结点的指针
};
};
/// 广义表
typedef GLNode *GList;
____
。____
,GetTail(L)=____
,GetTail(GetHead(L))=____
,GetTail(GetHead(GetTail(L)))=____
。____
。