9_4A.C
上传用户:wyn840322
上传日期:2007-01-13
资源大小:294k
文件大小:2k
源码类别:

数据结构

开发平台:

C/C++

  1. /* ======================================== */
  2. /*    程式实例: 9_4a.c                      */
  3. /*    线性搜索                              */
  4. /* ======================================== */
  5. #include <stdlib.h>
  6. #include <time.h>
  7. #define MAX  100                  /* 最大阵列容量     */
  8. struct element                    /* 记录结构宣告     */
  9. {
  10.    int key;                       /* 搜索键值         */
  11. };
  12. typedef struct element record;    /* 结构新型态       */
  13. record data[MAX];                 /* 结构阵列宣告     */
  14. /* ---------------------------------------- */
  15. /*  线性搜索                                */
  16. /* ---------------------------------------- */
  17. int seq_search(int key)
  18. {
  19.    int pos;                       /* 阵列索引         */
  20.    pos = 0;                       /* 从头开始找       */
  21.    while ( pos < MAX )            /* 线性搜索主回路   */
  22.    {
  23.       if ( key == data[pos].key ) /* 是否找到         */
  24.          return pos;
  25.       pos ++;                     /* 下一个元素       */
  26.    }
  27.    return -1;
  28. }
  29. /* ---------------------------------------- */
  30. /*  主程式: 用乱数来产生阵列元素, 接着输入  */
  31. /*  值用线性搜索来找值.                     */
  32. /* ---------------------------------------- */
  33. void main()
  34. {
  35.    int checked[300];              /* 检查阵列         */
  36.    int i,temp;
  37.    long temptime;
  38.    srand(time(&temptime) % 60);   /* 使用时间初始乱数 */
  39.    for ( i = 0; i < 300; i++ )
  40.       checked[i] = 0;             /* 清除检查阵列     */
  41.    i = 0;
  42.    while ( i != MAX )             /* 产生阵列值的回路 */
  43.    {
  44.       temp = rand() % 300;        /* 乱数取值 0-299   */
  45.       if ( checked[temp] == 0 )   /* 是否是已有的值   */
  46.       {
  47.          data[i].key = temp;      /* 存入阵列中       */
  48.          checked[temp] = 1;       /* 设定此值产生过   */
  49.          i++;                     /* 下一个阵列值     */
  50.       }
  51.    }
  52.    while ( 1 )                    /* 主回路开始       */
  53.    {
  54.       printf("n请输入搜索值(0-299) ==> ");
  55.       scanf("%d",&temp);          /* 读入搜索值       */
  56.       if ( temp != -1 )
  57.       {
  58.          i = seq_search(temp);    /* 呼叫线性搜索     */
  59.          if ( i != -1 )
  60.             printf("找到搜索值:%d[%d]n",temp,i);
  61.          else
  62.             printf("没有找到搜索值:%dn",temp);
  63.       }
  64.       else
  65.          exit(1);                 /* 结束程式         */
  66.    }
  67. }