文档介绍:《数据结构与算法》实验报告
一、需求分析
问题描述:编制一个能演示执行集合的并、交和差运算的程序
基本要求: 为一个以“回车符”为结束标志的字符串,串中字符顺序不限,且允许出现重复字符或非法 字符,程序运用时自动过淀去,输出的运算结果中将不含重复字符和三睢字符。计算机终端 中显示提示信息之后,由用户自行选择下一步命令,相应输入数据和运算结果在其后显示.
数据测试:
Setl="magazine。Set2=/paper///
SetlUSet2=" aegimnprz” ,SetlCSet2=" a”,Setl-Set2=" gimnz”;
Setl=" 012oper4a6tion89”,Set2=" error data",
Setl USet2=^ adeinoprt^ ,SetlCSet2=" aeort99 , Setl-Set2=" inp" .
二、概要设计
运用顺序表
.定义顺序表
typedef struct SET{ char *elem;
int size;
int length;
}set;
2基本操作:
set InitSet(set s);
〃初始化集合
set Input(set s);
〃向集合中输入元素
set InsertSet (set s, char e);
〃向集合中插入元索
set DelateSet(set s9 int n);
〃从集合中删除元素
void display(set s);
〃显示集合
set SetMix(set setl,set set2, set set3);
〃求集合的交集
set check(set s);
〃检查集合中是否有数字或者重复字母
set Sort(set s);
〃对集合中的元素进行排序
三、详细设计
.头文件
#include<>
#include<>
#include<>
.定义
#define MAX_SIZE 20 (顺序表的初始大小)
#define ADD_SIZE 10 (顺序表的递增大小)
.结构类型
typedef struct SET{
char *elem;
int size;
int length;
}set;
.初始化集合
set InitSetfset s){
=(char*)malloc(MAX_SIZE*sizeof(char));
=MAX_SIZE;
=0;
return s;
}
.向集合中输入元素
set lnput(set s){
char *newbase;
gets();
+=strlen();
if(<=){
newbase=(char*)realloc(/(+ADD_SIZE)*sizeof(char));
=newbase;
+=ADD_SIZE;
) return s;
)
,向集合中插入元素
set InsertSetfset e){
[]=e;
[+l]=,\O,;
++;
return s;
}
•从集合中删除元素
set DelateSetfset sjnt n){
int i;
for(i=n;i<=;i++){
[i-l]=[i];
)
-;
return s;
}
.显示集合
void displayfset s){ puts();
}
.检查集合中是否有数字或者重复字母
set checkfset s){
int ij,count;
for(i=l;i<=;i++){ for(j=l;j<i;j++){
if([i-l]==[j-l]){ s=DelateSet(sJ);
i-; break;
)
)
)
for(i=l;i<=;i++){
if([i-l]>'z'|| [i-l]<'a'){ s=DelateSet(sJ);
i-;
)
}
return s;
)
.求集合的并集
set SetMix(set setl^et set2,set set3){
int i