鱼C论坛

 找回密码
 立即注册
查看: 8968|回复: 22

[已解决]数据结构与算法集合问题

[复制链接]
发表于 2021-3-18 22:32:15 | 显示全部楼层 |阅读模式

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

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

x
好兄弟们,明天交作业了
最佳答案
2021-3-18 23:46:56
作业要自己做,这次决定帮你了,但是你总不能指望别人一直帮你做作业吧

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdbool.h>

  4. void intersection_set(const int a[], size_t a_size, const int b[], size_t b_size, int c[], size_t *c_size, size_t c_max_size) {
  5.     for(size_t i = 0; i < a_size; ++i) {
  6.         for(size_t j = 0; j < b_size; ++j) {
  7.             if(a[i] == b[j]) {
  8.                 if(*c_size >= c_max_size) return;
  9.                 c[(*c_size)++] = a[i];
  10.             }
  11.         }
  12.     }
  13. }

  14. void union_set(const int a[], size_t a_size, const int b[], size_t b_size, int c[], size_t *c_size, size_t c_max_size) {
  15.     if(a_size >= c_max_size) return;
  16.     memcpy(c, a, sizeof(a[0]) * a_size);
  17.     *c_size = a_size;
  18.     for(size_t i = 0; i < b_size; ++i) {
  19.         bool flag = true;
  20.         for(size_t j = 0; j < *c_size; ++j) {
  21.             if(b[i] == c[j]) {
  22.                 flag = false;
  23.                 break;
  24.             }
  25.         }
  26.         if(*c_size >= c_max_size) return;
  27.         if(flag) c[(*c_size)++] = b[i];
  28.     }
  29. }

  30. void print(int a[], size_t size) {
  31.     for(size_t i = 0; i < size; ++i) {
  32.         printf("%d ", a[i]);
  33.     }
  34.     printf("\n");
  35. }

  36. int main(void) {
  37.     int a[] = {1 ,9, 2, 7, 5, 3};
  38.     int b[] = {1 ,8, 2, 6, 9};
  39.     int c[100];
  40.     int d[100];
  41.     size_t a_size = 6;
  42.     size_t b_size = 5;
  43.     size_t c_size = 0;
  44.     size_t d_size = 0;
  45.     size_t c_max_size = 100;
  46.     size_t d_max_size = 100;
  47.     intersection_set(a, a_size, b, b_size, c, &c_size, c_max_size);
  48.     union_set(a, a_size, b, b_size, d, &d_size, d_max_size);
  49.     printf("a:\n"); print(a, a_size);
  50.     printf("b:\n"); print(b, b_size);
  51.     printf("c:\n"); print(c, c_size);
  52.     printf("d:\n"); print(d, d_size);
  53.     return 0;
  54. }
复制代码
IMG_20210318_221502.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-3-18 23:46:56 | 显示全部楼层    本楼为最佳答案   
作业要自己做,这次决定帮你了,但是你总不能指望别人一直帮你做作业吧

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdbool.h>

  4. void intersection_set(const int a[], size_t a_size, const int b[], size_t b_size, int c[], size_t *c_size, size_t c_max_size) {
  5.     for(size_t i = 0; i < a_size; ++i) {
  6.         for(size_t j = 0; j < b_size; ++j) {
  7.             if(a[i] == b[j]) {
  8.                 if(*c_size >= c_max_size) return;
  9.                 c[(*c_size)++] = a[i];
  10.             }
  11.         }
  12.     }
  13. }

  14. void union_set(const int a[], size_t a_size, const int b[], size_t b_size, int c[], size_t *c_size, size_t c_max_size) {
  15.     if(a_size >= c_max_size) return;
  16.     memcpy(c, a, sizeof(a[0]) * a_size);
  17.     *c_size = a_size;
  18.     for(size_t i = 0; i < b_size; ++i) {
  19.         bool flag = true;
  20.         for(size_t j = 0; j < *c_size; ++j) {
  21.             if(b[i] == c[j]) {
  22.                 flag = false;
  23.                 break;
  24.             }
  25.         }
  26.         if(*c_size >= c_max_size) return;
  27.         if(flag) c[(*c_size)++] = b[i];
  28.     }
  29. }

  30. void print(int a[], size_t size) {
  31.     for(size_t i = 0; i < size; ++i) {
  32.         printf("%d ", a[i]);
  33.     }
  34.     printf("\n");
  35. }

  36. int main(void) {
  37.     int a[] = {1 ,9, 2, 7, 5, 3};
  38.     int b[] = {1 ,8, 2, 6, 9};
  39.     int c[100];
  40.     int d[100];
  41.     size_t a_size = 6;
  42.     size_t b_size = 5;
  43.     size_t c_size = 0;
  44.     size_t d_size = 0;
  45.     size_t c_max_size = 100;
  46.     size_t d_max_size = 100;
  47.     intersection_set(a, a_size, b, b_size, c, &c_size, c_max_size);
  48.     union_set(a, a_size, b, b_size, d, &d_size, d_max_size);
  49.     printf("a:\n"); print(a, a_size);
  50.     printf("b:\n"); print(b, b_size);
  51.     printf("c:\n"); print(c, c_size);
  52.     printf("d:\n"); print(d, d_size);
  53.     return 0;
  54. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-3-20 16:36:22 | 显示全部楼层
.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 16:57:41 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-5 20:42:48 | 显示全部楼层

回帖奖励 +10 鱼币

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

使用道具 举报

发表于 2021-7-8 10:49:51 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-8 10:53:07 | 显示全部楼层
学习一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-10 16:52:11 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-12 09:29:31 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-25 09:55:58 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-25 10:03:45 | 显示全部楼层

回帖奖励 +10 鱼币

学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-26 08:19:24 | 显示全部楼层

回帖奖励 +10 鱼币

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

使用道具 举报

发表于 2021-9-21 18:43:53 | 显示全部楼层
为了鱼币
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-21 18:44:25 | 显示全部楼层
再来
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-21 18:44:54 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-21 18:45:27 | 显示全部楼层
还没有
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-21 18:45:57 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-21 18:46:37 | 显示全部楼层
。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-21 18:47:07 | 显示全部楼层
最后一次
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-4 08:32:53 | 显示全部楼层
666
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-7 14:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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