鱼C论坛

 找回密码
 立即注册
查看: 1958|回复: 2

怎么设计顺序表

[复制链接]
发表于 2020-5-1 11:15:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
设计一个顺序表,实现以下操作
1,将元素x插入表中并保持有序;
2,查找值为x的元素,若找到则将其删除;
3,输出表中所有元素。
要求:对上述每个操作设计一个子函数,并设计一个主函数调用各子函数,以验证所设计的有序顺序表的正确性。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-1 12:36:32 | 显示全部楼层
没人吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-2 18:34:44 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdbool.h>
  5. #define MAXSIZE 65535

  6. void insert(int *, int, int);

  7. bool search(int *, int, int);

  8. void printlist(int *, int);

  9. int main()
  10. {
  11.     int sqlist[MAXSIZE] = {1, 2, 3, 5, 8, 12, 16, 18, 22, 25, 29, 77, 89, 92};
  12.     int len = 14, ins;
  13.     printf("输入要插入的数字(输入ctrl + Z退出):");
  14.     while(~scanf("%d", &ins))
  15.     {
  16.         insert(sqlist, ins, len);
  17.         len++;

  18.         printf("输入要删除的数字:");
  19.         scanf("%d", &ins);
  20.         bool delete_success = search(sqlist, ins, len);
  21.         printf(delete_success ? "Delete Success!\n" : "Delete Failed!\n");
  22.         len = delete_success ? len - 1 : len;

  23.         printf("输出结果如下:\n");
  24.         printlist(sqlist, len);

  25.         printf("输入要插入的数字(输入ctrl + Z退出):");
  26.     }


  27.     return 0;
  28. }

  29. void insert(int sq[], int x, int n)
  30. {
  31.     int loc = n;
  32.     for(int i = 0; i < n; i++)
  33.     {
  34.         if(sq[i] > x)
  35.         {
  36.             loc = i;
  37.             break;
  38.         }
  39.     }
  40.     for(int i = n - 1; i >= loc; i--)
  41.         sq[i + 1] = sq[i];
  42.     sq[loc] = x;
  43. }

  44. bool search(int sq[], int x, int n)
  45. {
  46.     for(int i = 0; i < n; i++)
  47.         if(sq[i] == x)
  48.         {
  49.             for(int j = i; j < n; j++)
  50.                 sq[j] = sq[j + 1];
  51.             return true;
  52.         }
  53.     return false;
  54. }

  55. void printlist(int sq[], int n)
  56. {
  57.     for(int i = 0; i < n; i++)
  58.         printf(i ? " %d" : "%d", sq[i]);
  59.     putchar(10);
  60. }

复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-7 11:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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