三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 377|回复: 0
打印 上一主题 下一主题

C语言数据结构-main2-1.c

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-9-1 08:11:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /* main2-1.c 检验bo2-1.c的主程序 */
  2. #include"c1.h"
  3. typedef int ElemType;
  4. #include"c2-1.h"
  5. #include"bo2-1.c"

  6. Status comp(ElemType c1,ElemType c2) /* 数据元素判定函数(平方关系) */
  7. {
  8.    if(c1==c2*c2)
  9.      return TRUE;
  10.    else
  11.      return FALSE;
  12. }

  13. void visit(ElemType *c) /* ListTraverse()调用的函数(类型要一致) */
  14. {
  15.    printf("%d ",*c);
  16. }

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

  21. void main()
  22. {
  23.    SqList L;
  24.    ElemType e,e0;
  25.    Status i;
  26.    int j,k;
  27.    i=InitList(&L);
  28.    printf("初始化L后:L.elem=%u L.length=%d L.listsize=%d\n",L.elem,L.length,L.listsize);
  29.    for(j=1;j<=5;j++)
  30.      i=ListInsert(&L,1,j);
  31.    printf("在L的表头依次插入1~5后:*L.elem=");
  32.    for(j=1;j<=5;j++)
  33.      printf("%d ",*(L.elem+j-1));
  34.    printf("\n");
  35.    printf("L.elem=%u L.length=%d L.listsize=%d\n",L.elem,L.length,L.listsize);
  36.    i=ListEmpty(L);
  37.    printf("L是否空:i=%d(1:是 0:否)\n",i);
  38.    i=ClearList(&L);
  39.    printf("清空L后:L.elem=%u L.length=%d L.listsize=%d\n",L.elem,L.length,L.listsize);
  40.    i=ListEmpty(L);
  41.    printf("L是否空:i=%d(1:是 0:否)\n",i);
  42.    for(j=1;j<=10;j++)
  43.      ListInsert(&L,j,j);
  44.    printf("在L的表尾依次插入1~10后:*L.elem=");
  45.    for(j=1;j<=10;j++)
  46.      printf("%d ",*(L.elem+j-1));
  47.    printf("\n");
  48.    printf("L.elem=%u L.length=%d L.listsize=%d\n",L.elem,L.length,L.listsize);
  49.    ListInsert(&L,1,0);
  50.    printf("在L的表头插入0后:*L.elem=");
  51.    for(j=1;j<=ListLength(L);j++) /* ListLength(L)为元素个数 */
  52.      printf("%d ",*(L.elem+j-1));
  53.    printf("\n");
  54.    printf("L.elem=%u(有可能改变) L.length=%d(改变) L.listsize=%d(改变)\n",L.elem,L.length,L.listsize);
  55.    GetElem(L,5,&e);
  56.    printf("第5个元素的值为:%d\n",e);
  57.    for(j=3;j<=4;j++)
  58.    {
  59.      k=LocateElem(L,j,comp);
  60.      if(k)
  61.        printf("第%d个元素的值为%d的平方\n",k,j);
  62.      else
  63.        printf("没有值为%d的平方的元素\n",j);
  64.    }
  65.    for(j=1;j<=2;j++) /* 测试头两个数据 */
  66.    {
  67.      GetElem(L,j,&e0); /* 把第j个数据赋给e0 */
  68.      i=PriorElem(L,e0,&e); /* 求e0的前驱 */
  69.      if(i==INFEASIBLE)
  70.        printf("元素%d无前驱\n",e0);
  71.      else
  72.        printf("元素%d的前驱为:%d\n",e0,e);
  73.    }
  74.    for(j=ListLength(L)-1;j<=ListLength(L);j++) /* 最后两个数据 */
  75.    {
  76.      GetElem(L,j,&e0); /* 把第j个数据赋给e0 */
  77.      i=NextElem(L,e0,&e); /* 求e0的后继 */
  78.      if(i==INFEASIBLE)
  79.        printf("元素%d无后继\n",e0);
  80.      else
  81.        printf("元素%d的后继为:%d\n",e0,e);
  82.    }
  83.    k=ListLength(L); /* k为表长 */
  84.    for(j=k+1;j>=k;j--)
  85.    {
  86.      i=ListDelete(&L,j,&e); /* 删除第j个数据 */
  87.      if(i==ERROR)
  88.        printf("删除第%d个数据失败\n",j);
  89.      else
  90.        printf("删除的元素值为:%d\n",e);
  91.    }
  92.    printf("依次输出L的元素:");
  93.    ListTraverse(L,visit); /* 依次对元素调用visit(),输出元素的值 */
  94.    printf("L的元素值加倍后:");
  95.    ListTraverse(L,dbl); /* 依次对元素调用dbl(),元素值乘2 */
  96.    ListTraverse(L,visit);
  97.    DestroyList(&L);
  98.    printf("销毁L后:L.elem=%u L.length=%d L.listsize=%d\n",L.elem,L.length,L.listsize);
  99. }
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-5-2 00:12 , Processed in 0.025888 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表