⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main2-1.cpp

📁 数据结构相关代码
💻 CPP
字号:
 // main2-1.cpp 检验bo2-1.cpp的主程序
 #include"c1.h"
 typedef int ElemType; // 定义ElemType为整型
 #include"c2-1.h" // 线性表的顺序存储结构
 #include"bo2-1.cpp" // 线性表顺序存储结构的基本操作
 #include"func2-2.cpp" // 包括equal()、comp()、print()、print1()和print2()函数

 Status sq(ElemType c1,ElemType c2)
 { // 数据元素判定函数(平方关系),LocateElem()调用的函数
   if(c1==c2*c2)
     return TRUE;
   else
     return FALSE;
 }

 void dbl(ElemType &c)
 { // ListTraverse()调用的另一函数(元素值加倍)
   c*=2;
 }

 void main()
 {
   SqList L;
   ElemType e,e0;
   Status i;
   int j,k;
   InitList(L); // 初始化线性表L
   printf("初始化L后,L.length=%d,L.listsize=%d,L.elem=%u\n",L.length,
   L.listsize,L.elem);
   for(j=1;j<=5;j++)
     i=ListInsert(L,1,j); // 在L的表头插入j
   printf("在L的表头依次插入1~5后,*L.elem=");
   for(j=1;j<=5;j++)
     printf("%d ",*(L.elem+j-1)); // 依次输出表L中的元素
   printf("\n调用ListTraverse()函数,依次输出表L中的元素:");
   ListTraverse(L,print1); // 依次对表L中的元素调用print1()函数(输出元素的值)
   i=ListEmpty(L); // 检测表L是否空
   printf("L.length=%d(改变),L.listsize=%d(不变),",L.length,L.listsize);
   printf("L.elem=%u(不变),L是否空?i=%d(1:是 0:否)\n",L.elem,i);
   ClearList(L); // 清空表L
   i=ListEmpty(L); // 再次检测表L是否空
   printf("清空L后,L.length=%d,L.listsize=%d,",L.length,L.listsize);
   printf("L.elem=%u,L是否空?i=%d(1:是 0:否)\n",L.elem,i);
   for(j=1;j<=10;j++)
     ListInsert(L,j,j); // 在L的表尾插入j
   printf("在L的表尾依次插入1~10后,L=");
   ListTraverse(L,print1); // 依次输出表L中的元素
   printf("L.length=%d,L.listsize=%d,L.elem=%u\n",L.length,L.listsize,L.elem);
   ListInsert(L,1,0); // 在L的表头插入0,增加存储空间
   printf("在L的表头插入0后,L.length=%d(改变),L.listsize=%d(改变),"
   "L.elem=%u(有可能改变)\n",L.length,L.listsize,L.elem);
   GetElem(L,5,e); // 将表L中的第5个元素的值赋给e
   printf("第5个元素的值为%d\n",e);
   for(j=10;j<=11;j++)
   { k=LocateElem(L,j,equal); // 查找表L中与j相等的元素,并将其位序赋给k
     if(k) // k不为0,表明有符合条件的元素
       printf("第%d个元素的值为%d,",k,j);
     else // k为0,没有符合条件的元素
       printf("没有值为%d的元素\n",j);
   }
   for(j=3;j<=4;j++) // 测试2个数据
   { k=LocateElem(L,j,sq); // 查找表L中与j的平方相等的元素,并将其位序赋给k
     if(k) // k不为0,表明有符合条件的元素
       printf("第%d个元素的值为%d的平方,",k,j);
     else // k为0,没有符合条件的元素
       printf("没有值为%d的平方的元素\n",j);
   }
   for(j=1;j<=2;j++) // 测试头2个数据
   { GetElem(L,j,e0); // 将表L中的第j个元素的值赋给e0
     i=PriorElem(L,e0,e); // 求e0的前驱,如成功,将值赋给e
     if(i==ERROR) // 操作失败
       printf("元素%d无前驱,",e0);
     else // 操作成功
       printf("元素%d的前驱为%d\n",e0,e);
   }
   for(j=ListLength(L)-1;j<=ListLength(L);j++) // 最后2个数据
   { GetElem(L,j,e0); // 将表L中的第j个元素的值赋给e0
     i=NextElem(L,e0,e); // 求e0的后继,如成功,将值赋给e
     if(i==ERROR) // 操作失败
       printf("元素%d无后继\n",e0);
     else // 操作成功
       printf("元素%d的后继为%d,",e0,e);
   }
   k=ListLength(L); // k为表长
   for(j=k+1;j>=k;j--)
   { i=ListDelete(L,j,e); // 删除第j个数据
     if(i==ERROR) // 表中不存在第j个数据
       printf("删除第%d个元素失败。",j);
     else // 表中存在第j个数据,删除成功,其值赋给e
       printf("删除第%d个元素成功,其值为%d",j,e);
   }
   ListTraverse(L,dbl); // 依次对元素调用dbl(),元素值乘2
   printf("L的元素值加倍后,L=");
   ListTraverse(L,print1); // 依次输出表L中的元素
   DestroyList(L); // 销毁表L
   printf("销毁L后,L.length=%d,L.listsize=%d,L.elem=%u\n",L.length,
   L.listsize,L.elem);
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -