实验目的
熟悉集合的基本概念,并在计算机中用适当的数据结构来表示。
实验内容
简单集合(如数字集合)的数组表示法和链表表示法,并测试正确性。编程实现集合的并、交、差、补和对称差运算。
实验要求
列出实验目的、实验内容、实验步骤、实验的源程序和实验结果。
实验参考
集合的表示是集合论的基础,我们可以选择数组和链表这两种常用的数据结构来实现。根据集合的五种基本运算的含义,对参与运算的两个集合做遍历,从而求出其计算结果。
源程序参考
/**************************************************************************
* (C) Copyright 2015-2018 by Gavin Y. Liu All Rights Reserved. *
* *
* DISCLAIMER: The authors and publisher shall not be liable in any event *
* for incidental or consequential damages in connection with, or arising *
* out of, the furnishing, performance, or use of these programs. *
**************************************************************************/
#ifndef _SETLOGICHEADER_H_
#define _SETLOGICHEADER_H_
#define MAX_NUM 200
#define MAX_SIZE 100
typedef struct
{
int size;
char ele[MAX_NUM][MAX_SIZE];
}ArraySet;
typedef struct LinkSet
{
char ele[MAX_SIZE];
struct LinkSet* next;
}LinkSet;
/*Private function prototypes*/
static void arrayset_union_oper(ArraySet set1, ArraySet set2, ArraySet* resu);
static void arrayset_inter_oper(ArraySet set1, ArraySet set2, ArraySet* resu);
static void arrayset_differ_oper(ArraySet set1, ArraySet set2, ArraySet* resu);
static void arrayset_symdiffer_oper(ArraySet set1, ArraySet set2, ArraySet* resu);
static void arrayset_comple_oper(ArraySet e, ArraySet set1, ArraySet* resu);
static void linkset_union_oper(LinkSet* set1, LinkSet* set2, LinkSet* resu);
static void linkset_inter_oper(LinkSet* set1, LinkSet* set2, LinkSet* resu);
static void linkset_differ_oper(LinkSet* set1, LinkSet* set2, LinkSet* resu);
static void linkset_symdiffer_oper(LinkSet* set1, LinkSet* set2, LinkSet* resu);
static void linkset_comple_oper(LinkSet* e, LinkSet* set, LinkSet* resu);
static int str_cmp(const char* s1, const char* s2);
static int fun(const void* a, const void* b);
static void arrayset_init(ArraySet* set);
static int arrayset_push(ArraySet* set, const char* data);
static int arrayset_pop(ArraySet* set, const char* data);
static void arrayset_modify(ArraySet* set, char* olddata, char* newdata);
static void arrayset_destroy(ArraySet* set);
static void arrayset_print(const ArraySet set);
static int linkset_init(Lin