- // main5-1.cpp 检验bo5-1.cpp的主程序
- #include"c1.h"
- typedef int ElemType;
- #include"c5-1.h"
- #include"bo5-1.cpp"
- void main()
- {
- Array A;
- int i,j,k,*p,dim=3,bound1=3,bound2=4,bound3=2; // A[3][4][2]数组
- ElemType e,*p1;
- InitArray(A,dim,bound1,bound2,bound3); // 构造3×4×2的3维数组A
- p=A.bounds;
- printf("A.bounds=");
- for(i=0;i<dim;i++) // 顺序输出A.bounds
- printf("%d ",*(p+i));
- p=A.constants;
- printf("/nA.constants=");
- for(i=0;i<dim;i++) // 顺序输出A.constants
- printf("%d ",*(p+i));
- printf("/n%d页%d行%d列矩阵元素如下:/n",bound1,bound2,bound3);
- for(i=0;i<bound1;i++)
- {
- for(j=0;j<bound2;j++)
- {
- for(k=0;k<bound3;k++)
- {
- Assign(A,i*100+j*10+k,i,j,k); // 将i×100+j×10+k赋值给A[i][j][k]
- Value(e,A,i,j,k); // 将A[i][j][k]的值赋给e
- printf("A[%d][%d][%d]=%2d ",i,j,k,e); // 输出A[i][j][k]
- }
- printf("/n");
- }
- printf("/n");
- }
- p1=A.base;
- printf("A.base=/n");
- for(i=0;i<bound1*bound2*bound3;i++) // 顺序输出A.base
- {
- printf("%4d",*(p1+i));
- if(i%(bound2*bound3)==bound2*bound3-1)
- printf("/n");
- }
- printf("A.dim=%d/n",A.dim);
- DestroyArray(A);
- }
- // main5-2.cpp 检验bo5-2.cpp的主程序
- #include"c1.h"
- typedef int ElemType;
- #include"c5-2.h"
- #include"bo5-2.cpp"
- void main()
- {
- TSMatrix A,B,C;
- printf("创建矩阵A: ");
- CreateSMatrix(A);
- PrintSMatrix(A);
- printf("由矩阵A复制矩阵B:/n");
- CopySMatrix(A,B);
- PrintSMatrix1(B);
- DestroySMatrix(B);
- printf("销毁矩阵B后:/n");
- PrintSMatrix1(B);
- printf("创建矩阵B2:(与矩阵A的行、列数相同,行、列分别为%d,%d)/n",A.mu,A.nu);
- CreateSMatrix(B);
- PrintSMatrix1(B);
- AddSMatrix(A,B,C);
- printf("矩阵C1(A+B):/n");
- PrintSMatrix1(C);
- SubtSMatrix(A,B,C);
- printf("矩阵C2(A-B):/n");
- PrintSMatrix1(C);
- TransposeSMatrix(A,C);
- printf("矩阵C3(A的转置):/n");
- PrintSMatrix1(C);
- printf("创建矩阵A2: ");
- CreateSMatrix(A);
- PrintSMatrix1(A);
- printf("创建矩阵B3:(行数应与矩阵A2的列数相同=%d)/n",A.nu);
- CreateSMatrix(B);
- PrintSMatrix1(B);
- MultSMatrix(A,B,C);
- printf("矩阵C5(A×B):/n");
- PrintSMatrix1(C);
- }
- // main5-3.cpp 检验bo5-3.cpp的主程序(与main5-2.cpp很相像)
- #include"c1.h"
- typedef int ElemType;
- #include"c5-3.h" // 此行与main5-2.cpp不同
- #include"bo5-3.cpp" // 此行与main5-2.cpp不同
- void main()
- {
- RLSMatrix A,B,C; // 此行与main5-2.cpp不同
- printf("创建矩阵A: ");
- CreateSMatrix(A);
- PrintSMatrix(A);
- printf("由矩阵A复制矩阵B:/n");
- CopySMatrix(A,B);
- PrintSMatrix1(B);
- DestroySMatrix(B);
- printf("销毁矩阵B后:/n");
- PrintSMatrix1(B);
- printf("创建矩阵B2:(与矩阵A的行、列数相同,行、列分别为%d,%d)/n",A.mu,A.nu);
- CreateSMatrix(B);
- PrintSMatrix1(B);
- AddSMatrix(A,B,C);
- printf("矩阵C1(A+B):/n");
- PrintSMatrix1(C);
- SubtSMatrix(A,B,C);
- printf("矩阵C2(A-B):/n");
- PrintSMatrix1(C);
- TransposeSMatrix(A,C);
- printf("矩阵C3(A的转置):/n");
- PrintSMatrix1(C);
- printf("创建矩阵A2:/n");
- CreateSMatrix(A);
- PrintSMatrix1(A);
- printf("创建矩阵B3:(行数应与矩阵A2的列数相同=%d)/n",A.nu);
- CreateSMatrix(B);
- PrintSMatrix1(B);
- MultSMatrix(A,B,C);
- printf("矩阵C5(A×B):/n");
- PrintSMatrix1(C);
- }
- // main5-4.cpp 检验bo5-4.cpp的主程序
- #include"c1.h"
- typedef int ElemType;
- #include"c5-4.h"
- #include"bo5-4.cpp"
- void main()
- {
- CrossList A,B,C;
- InitSMatrix(A); // CrossList类型的变量在初次使用之前必须初始化
- InitSMatrix(B);
- printf("创建矩阵A: ");
- CreateSMatrix(A);
- PrintSMatrix(A);
- printf("由矩阵A复制矩阵B: ");
- CopySMatrix(A,B);
- PrintSMatrix(B);
- DestroySMatrix(B); // CrossList类型的变量在再次使用之前必须先销毁
- printf("销毁矩阵B后,矩阵B为:/n");
- PrintSMatrix1(B);
- printf("创建矩阵B2:(与矩阵A的行、列数相同,行、列分别为%d,%d)/n",A.mu,A.nu);
- CreateSMatrix(B);
- PrintSMatrix1(B);
- printf("矩阵C1(A+B):/n");
- AddSMatrix(A,B,C);
- PrintSMatrix1(C);
- DestroySMatrix(C);
- printf("矩阵C2(A-B):/n");
- SubtSMatrix(A,B,C);
- PrintSMatrix1(C);
- DestroySMatrix(C);
- printf("矩阵C3(A的转置):/n");
- TransposeSMatrix(A,C);
- PrintSMatrix1(C);
- DestroySMatrix(A);
- DestroySMatrix(B);
- DestroySMatrix(C);
- printf("创建矩阵A2: ");
- CreateSMatrix(A);
- PrintSMatrix1(A);
- printf("创建矩阵B3:(行数应与矩阵A2的列数相同=%d)/n",A.nu);
- CreateSMatrix(B);
- PrintSMatrix1(B);
- printf("矩阵C5(A×B):/n");
- MultSMatrix(A,B,C);
- PrintSMatrix1(C);
- DestroySMatrix(A);
- DestroySMatrix(B);
- DestroySMatrix(C);
- }
- // main5-5.cpp 检验bo5-5.cpp的主程序
- #include"c1.h"
- typedef char AtomType; // 定义原子类型为字符型
- #include"c5-5.h" // 定义广义表的头尾链表存储
- #include"bo5-5.cpp"
- void visit(AtomType e)
- {
- printf("%c ", e);
- }
- void main()
- {
- char p[80];
- SString t;
- GList l,m;
- InitGList(l);
- InitGList(m);
- printf("空广义表l的深度=%d l是否空?%d(1:是 0:否)/n",GListDepth(l),GListEmpty(l));
- printf("请输入广义表l(书写形式:空表:(),单原子:(a),其它:(a,(b),c)):/n");
- gets(p);
- StrAssign(t,p);
- CreateGList(l,t);
- printf("广义表l的长度=%d/n",GListLength(l));
- printf("广义表l的深度=%d l是否空?%d(1:是 0:否)/n",GListDepth(l),GListEmpty(l));
- printf("遍历广义表l:/n");
- Traverse_GL(l,visit);
- printf("/n复制广义表m=l/n");
- CopyGList(m,l);
- printf("广义表m的长度=%d/n",GListLength(m));
- printf("广义表m的深度=%d/n",GListDepth(m));
- printf("遍历广义表m:/n");
- Traverse_GL(m,visit);
- DestroyGList(m);
- m=GetHead(l);
- printf("/nm是l的表头元素,遍历m:/n");
- Traverse_GL(m,visit);
- DestroyGList(m);
- m=GetTail(l);
- printf("/nm是由l的表尾形成的广义表,遍历广义表m:/n");
- Traverse_GL(m,visit);
- InsertFirst_GL(m,l);
- printf("/n插入广义表l为m的表头,遍历广义表m:/n");
- Traverse_GL(m,visit);
- printf("/n删除m的表头,遍历广义表m:/n");
- DestroyGList(l);
- DeleteFirst_GL(m,l);
- Traverse_GL(m,visit);
- printf("/n");
- DestroyGList(m);
- }
- // main5-6.cpp 检验bo5-6.cpp的主程序
- #include"c1.h"
- typedef char AtomType; // 定义原子类型为字符型
- #include"c5-6.h" // 定义广义表的扩展线性链表存储结构
- #include"bo5-6.cpp" // 广义表的扩展线性链表存储结构基本操作
- void visit(AtomType e)
- {
- printf("%c ", e);
- }
- void main()
- {
- char p[80];
- GList1 l,m;
- SString t;
- InitGList(l); // 建立空的广义表l
- printf("空广义表l的深度=%d l是否空?%d(1:是 0:否)/n",GListDepth(l),GListEmpty(l));
- printf("请输入广义表l(书写形式:空表:(),单原子:(a),其它:(a,(b),c)):/n");
- gets(p);
- StrAssign(t,p);
- CreateGList(l,t);
- printf("广义表l的长度=%d/n",GListLength(l));
- printf("广义表l的深度=%d l是否空?%d(1:是 0:否)/n",GListDepth(l),GListEmpty(l));
- printf("遍历广义表l:/n");
- Traverse_GL(l,visit);
- printf("/n复制广义表m=l/n");
- CopyGList(m,l);
- printf("广义表m的长度=%d/n",GListLength(m));
- printf("广义表m的深度=%d/n",GListDepth(m));
- printf("遍历广义表m:/n");
- Traverse_GL(m,visit);
- DestroyGList(m);
- m=GetHead(l);
- printf("/nm是l的表头元素,遍历m:/n");
- Traverse_GL(m,visit);
- DestroyGList(m);
- m=GetTail(l);
- printf("/nm是由l的表尾形成的广义表,遍历广义表m:/n");
- Traverse_GL(m,visit);
- InsertFirst_GL(m,l);
- printf("/n插入广义表l为m的表头,遍历广义表m:/n");
- Traverse_GL(m,visit);
- DeleteFirst_GL(m,l);
- printf("/n删除m的表头,遍历广义表m:/n");
- Traverse_GL(m,visit);
- printf("/n");
- DestroyGList(m);
- }