微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 集合交差并三种操作的C实现

集合交差并三种操作的C实现

时间:12-01 来源:互联网 点击:

  1. head = (*s)->

    (*s)->

    while(head->

    Node_t *head = s->

    if(get_setlength(s1) >

    if(s1->head == NULL || s2->

    if(get_setlength(s1) >

    if(s1->

    /*********************************************
    删除一个集合
    参数: 指向集合指针的指针
    返回值: void
    **********************************************/
    void delete_set(Set **s)
    {
    Node_t *head = NULL;
    Node_t *temp = NULL;

    // assert(*s);
    if(*s == NULL)
    return;

    head = (*s)->head;

    while(head != NULL)
    {
    temp = head;
    head = head->next;
    free(temp);
    (*s)->size --;

    temp = NULL;
    }
    free(*s);
    *s = NULL;
    }

    最后是我的测试程序:

    /************************************************
    主函数
    完成各个函数的测试工作
    最后需要完成内存的释放
    ************************************************/
    int main()
    {
    Set* sets1 = NULL;
    Set* sets2 = NULL;
    Set* sets3 = NULL;
    Set* sets4 = NULL;

    int i = 0;
    int j = 0;
    for(i = 0; i < 10; ++ i)
    {
    if(!create_set(&sets1, i+10))
    break;
    j = i + 10 - 5;

    if(!create_set(&sets2, j))
    break;
    }
    printf("Set1 : ");
    print_set(sets1);
    printf("Set2 : ");
    print_set(sets2);

    sets3 = OrSets(sets1,sets2);
    printf("Set1 + Set2: ");
    print_set(sets3);

    sets3 = OrSets(sets2,sets1);
    printf("Set2 + Set1: ");
    print_set(sets3);

    delete_set(&sets3);
    sets3 = AndSets(sets1,sets2);
    printf("Set1 * Set2: ");
    print_set(sets3);

    delete_set(&sets3);
    sets3 = AndSets(sets2,sets1);
    printf("Set2 * Set1: ");
    print_set(sets3);

    delete_set(&sets3);
    sets3 = XorSets(sets1,sets2);
    printf("Set1 - Set2: ");
    print_set(sets3);

    delete_set(&sets3);
    // creat_nullset(&sets4);
    sets3 = XorSets(sets2,sets1);
    printf("Set2 - Set1: ");
    print_set(sets3);

    delete_set(&sets1);
    delete_set(&sets2);
    delete_set(&sets3);
    delete_set(&sets4);
    return 0;
    }

    实验效果:

    总结:

    该实现并没有考虑性能方面,基本上实现了集合的简单操作。后面有时间再想想如何优化查找和删除操作。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top