鱼C论坛

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

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

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

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

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

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

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) {
    for(size_t i = 0; i < a_size; ++i) {
        for(size_t j = 0; j < b_size; ++j) {
            if(a[i] == b[j]) {
                if(*c_size >= c_max_size) return;
                c[(*c_size)++] = a[i];
            }
        }
    }
}

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) {
    if(a_size >= c_max_size) return;
    memcpy(c, a, sizeof(a[0]) * a_size);
    *c_size = a_size;
    for(size_t i = 0; i < b_size; ++i) {
        bool flag = true;
        for(size_t j = 0; j < *c_size; ++j) {
            if(b[i] == c[j]) {
                flag = false;
                break;
            }
        }
        if(*c_size >= c_max_size) return;
        if(flag) c[(*c_size)++] = b[i];
    }
}

void print(int a[], size_t size) {
    for(size_t i = 0; i < size; ++i) {
        printf("%d ", a[i]);
    }
    printf("\n");
}

int main(void) {
    int a[] = {1 ,9, 2, 7, 5, 3};
    int b[] = {1 ,8, 2, 6, 9};
    int c[100];
    int d[100];
    size_t a_size = 6;
    size_t b_size = 5;
    size_t c_size = 0;
    size_t d_size = 0;
    size_t c_max_size = 100;
    size_t d_max_size = 100;
    intersection_set(a, a_size, b, b_size, c, &c_size, c_max_size);
    union_set(a, a_size, b, b_size, d, &d_size, d_max_size);
    printf("a:\n"); print(a, a_size);
    printf("b:\n"); print(b, b_size);
    printf("c:\n"); print(c, c_size);
    printf("d:\n"); print(d, d_size);
    return 0;
}
IMG_20210318_221502.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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) {
    for(size_t i = 0; i < a_size; ++i) {
        for(size_t j = 0; j < b_size; ++j) {
            if(a[i] == b[j]) {
                if(*c_size >= c_max_size) return;
                c[(*c_size)++] = a[i];
            }
        }
    }
}

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) {
    if(a_size >= c_max_size) return;
    memcpy(c, a, sizeof(a[0]) * a_size);
    *c_size = a_size;
    for(size_t i = 0; i < b_size; ++i) {
        bool flag = true;
        for(size_t j = 0; j < *c_size; ++j) {
            if(b[i] == c[j]) {
                flag = false;
                break;
            }
        }
        if(*c_size >= c_max_size) return;
        if(flag) c[(*c_size)++] = b[i];
    }
}

void print(int a[], size_t size) {
    for(size_t i = 0; i < size; ++i) {
        printf("%d ", a[i]);
    }
    printf("\n");
}

int main(void) {
    int a[] = {1 ,9, 2, 7, 5, 3};
    int b[] = {1 ,8, 2, 6, 9};
    int c[100];
    int d[100];
    size_t a_size = 6;
    size_t b_size = 5;
    size_t c_size = 0;
    size_t d_size = 0;
    size_t c_max_size = 100;
    size_t d_max_size = 100;
    intersection_set(a, a_size, b, b_size, c, &c_size, c_max_size);
    union_set(a, a_size, b, b_size, d, &d_size, d_max_size);
    printf("a:\n"); print(a, a_size);
    printf("b:\n"); print(b, b_size);
    printf("c:\n"); print(c, c_size);
    printf("d:\n"); print(d, d_size);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-3-20 16:36:22 | 显示全部楼层
.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 16:57:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +10 鱼币

学习一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-8 10:49:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-8 10:53:07 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-10 16:52:11 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-12 09:29:31 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-25 09:55:58 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +10 鱼币

学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +10 鱼币

学习一哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-21 18:43:53 | 显示全部楼层
为了鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-21 18:44:25 | 显示全部楼层
再来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-21 18:44:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-21 18:45:27 | 显示全部楼层
还没有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-21 18:45:57 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-21 18:46:37 | 显示全部楼层
。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-21 18:47:07 | 显示全部楼层
最后一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-4 08:32:53 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 05:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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