离散数学实践:集合的表示与运算

实验目的

熟悉集合的基本概念,并在计算机中用适当的数据结构来表示。

实验内容

简单集合(如数字集合)的数组表示法和链表表示法,并测试正确性。编程实现集合的并、交、差、补和对称差运算。

 实验要求

列出实验目的、实验内容、实验步骤、实验的源程序和实验结果。

实验参考

集合的表示是集合论的基础,我们可以选择数组和链表这两种常用的数据结构来实现。根据集合的五种基本运算的含义,对参与运算的两个集合做遍历,从而求出其计算结果。

源程序参考

/************************************************************************** 
 * (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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值