三木社区

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

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

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

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

  6. Status comp(ElemType c1,ElemType c2)
  7. { /* 数据元素判定函数(相等为TRUE,否则为FALSE) */
  8.    if(c1==c2)
  9.      return TRUE;
  10.    else
  11.      return FALSE;
  12. }

  13. void visit(ElemType c) /* 与main2-1.c不同 */
  14. {
  15.    printf("%d ",c);
  16. }

  17. void main() /* 除了几个输出语句外,主程和main2-1.c很像 */
  18. {
  19.    LinkList L; /* 与main2-1.c不同 */
  20.    ElemType e,e0;
  21.    Status i;
  22.    int j,k;
  23.    i=InitList(&L);
  24.    for(j=1;j<=5;j++)
  25.      i=ListInsert(L,1,j);
  26.    printf("在L的表头依次插入1~5后:L=");
  27.    ListTraverse(L,visit); /* 依次对元素调用visit(),输出元素的值 */
  28.    i=ListEmpty(L);
  29.    printf("L是否空:i=%d(1:是 0:否)\n",i);
  30.    i=ClearList(L);
  31.    printf("清空L后:L=");
  32.    ListTraverse(L,visit);
  33.    i=ListEmpty(L);
  34.    printf("L是否空:i=%d(1:是 0:否)\n",i);
  35.    for(j=1;j<=10;j++)
  36.      ListInsert(L,j,j);
  37.    printf("在L的表尾依次插入1~10后:L=");
  38.    ListTraverse(L,visit);
  39.    GetElem(L,5,&e);
  40.    printf("第5个元素的值为:%d\n",e);
  41.    for(j=0;j<=1;j++)
  42.    {
  43.      k=LocateElem(L,j,comp);
  44.      if(k)
  45.        printf("第%d个元素的值为%d\n",k,j);
  46.      else
  47.        printf("没有值为%d的元素\n",j);
  48.    }
  49.    for(j=1;j<=2;j++) /* 测试头两个数据 */
  50.    {
  51.      GetElem(L,j,&e0); /* 把第j个数据赋给e0 */
  52.      i=PriorElem(L,e0,&e); /* 求e0的前驱 */
  53.      if(i==INFEASIBLE)
  54.        printf("元素%d无前驱\n",e0);
  55.      else
  56.        printf("元素%d的前驱为:%d\n",e0,e);
  57.    }
  58.    for(j=ListLength(L)-1;j<=ListLength(L);j++)/*最后两个数据 */
  59.    {
  60.      GetElem(L,j,&e0); /* 把第j个数据赋给e0 */
  61.      i=NextElem(L,e0,&e); /* 求e0的后继 */
  62.      if(i==INFEASIBLE)
  63.        printf("元素%d无后继\n",e0);
  64.      else
  65.        printf("元素%d的后继为:%d\n",e0,e);
  66.    }
  67.    k=ListLength(L); /* k为表长 */
  68.    for(j=k+1;j>=k;j--)
  69.    {
  70.      i=ListDelete(L,j,&e); /* 删除第j个数据 */
  71.      if(i==ERROR)
  72.        printf("删除第%d个数据失败\n",j);
  73.      else
  74.        printf("删除的元素为:%d\n",e);
  75.    }
  76.    printf("依次输出L的元素:");
  77.    ListTraverse(L,visit);
  78.    DestroyList(&L);
  79.    printf("销毁L后:L=%u\n",L);
  80. }
复制代码


回复

使用道具 举报

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

辽公网安备 21021702000620号

GMT+8, 2025-5-2 00:20 , Processed in 0.026638 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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