数据结构集合运算Word文档格式.docx
- 文档编号:7073852
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:23
- 大小:170.71KB
数据结构集合运算Word文档格式.docx
《数据结构集合运算Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构集合运算Word文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
voidAequalB(lista);
复制
voidINSERT_SET();
递增储存
voidDECREASESHOW();
递减输出
intIN_SET(inti);
检测是否在集合中,并返回值
二、用户手册
1.首先先建立两个做实验的集合A和B
2.自动显示你所建的集合
3.进入选择界面,选择你想要用的功能(数字表示)
4.执行功能,输出结果
5.自动退出程序
四、调试与测试
分别展示六个功能
1.
2.
3.
4.
5.
6.
五、复杂度分析
做的时候没有考虑复杂度问题,主要就是求交集的时候先排序再求交还是先求交集在排序的问题,如果代码是顺序的,可以让求交集这个操作复杂度变成了o(m+n);
比先求交在排序复杂度低很多。
而且做课题时并没有把复杂度加入代码的考虑之中
六、附录
主要为三个文件,目录是控制台(汗。
。
用switch-case做的)
1.list.h
structnode
{
node*next;
intdata;
};
classlist
public:
list();
intlength()const;
~list();
intget_element(constinti)const;
voidinsert(constinti,constintx);
voiddelete_element(constinti);
node*gethead()
{
returnhead;
}
private:
intcount;
node*head;
2.list.cpp
#include"
list.h"
#include<
iostream>
usingnamespacestd;
list:
:
list()
head=newnode;
head->
next=NULL;
count=0;
data=0;
}
intlist:
length()const
returncount;
get_element(constinti)const
node*p;
p=head->
next;
intj=1;
while(p!
=NULL&
&
j!
=i)
p=p->
j++;
if(p==NULL)
return-1;
else
returnp->
data;
voidlist:
insert(constinti,constintx)
intj=0;
=i-1)
if(i<
1||i>
count+1)
return;
else
node*s=newnode;
s->
data=x;
next=p->
p->
next=s;
count++;
delete_element(constinti)
node*p=head;
while(j!
=i-1&
p!
=NULL)
count)
return;
node*u=p->
next=u->
deleteu;
count--;
creatlist()
{
intx;
cout<
<
"
输º
?
入¨
数º
y据Y:
ê
o"
endl;
cin>
>
x;
node*rear=head;
while(x!
=-1)
rear->
rear=s;
cout<
cin>
increaseArray()
for(inti=1;
i<
=count;
i++)
node*p=head->
while(p->
next!
{
if(p->
data>
=(p->
next)->
data)
{
inti=p->
p->
data=(p->
(p->
data=i;
}
p=p->
}
showArray()
node*p=head->
while(p!
=NULL)
p->
data<
"
;
~list()
{}
decreaseArray()
AandB(lista,listb)
boolflag=0;
liste;
e.AequalB(a);
listf;
f.AequalB(b);
node*p=e.head;
node*s=f.head;
node*rear=(this->
head);
while(p->
while(s->
{
if((p->
data==(s->
data)
intx=(s->
(this->
count)++;
node*w=newnode;
w->
rear->
next=w;
rear=w;
node*u=p->
e.count--;
node*v=s->
s->
next=v->
deletev;
f.count--;
flag=1;
break;
s=s->
if(flag==0)
flag=0;
s=f.head;
}
increaseArray();
AorB(lista,listb)
listd;
d.AaddB(a,b);
listc;
c.AandB(a,b);
AsubtractB(d,c);
AaddB(lista,listb)
head=e.head;
count=e.count;
intm=f.count;
node*p=f.head;
p=p->
for(inti=1;
=m;
i++)
intx=p->
insert(1,x);
increaseArray();
AsubtractB(lista,listb)
node*s=head;
intm=c.count;
node*p=c.head;
s=head;
for(intj=0;
j<
=count-1;
j++)
if((s->
data==p->
{
node*u=s->
symmetricDifference(lista,listb)
d.AsubtractB(a,b);
c.AsubtractB(b,a);
AorB(c,d);
AequalB(lista)
intm=a.count;
node*p=a.head;
count++;
INSERT_SET()
creatlist();
DECREASESHOW()
listb;
intm=count;
node*rear=b.head;
b.count++;
b.decreaseArray();
b.showArray();
IN_SET(inti)
intm=1;
intn=count;
for(intj=1;
=n;
if(i==p->
m=0;
break;
returnm;
3.test.cpp
#include"
#include<
cstring>
intmain()
lista;
请?
事º
先¨
¨
输º
实º
¦
Ì
验¨
用®
的Ì
A、¡
é
B集¡
¥
合?
<
A链¢
¡
ä
表À
ª
-1为a结¨
¢
束º
符¤
a.INSERT_SET();
你?
集¡
A为a"
a.showArray();
B链¢
b.INSERT_SET();
B为a"
ints;
选?
择?
需¨
要°
a的Ì
功|能¨
¹
\n"
"
(ê
§
1)ê
编À
¤
写¡
元a素?
测a试º
函¡
yIN_SET,ê
如¨
果?
已°
经-在¨
²
中D返¤
回?
0,ê
否¤
则¨
°
返¤
1(默?
认¨
检¨
¬
测a集¡
A中D的Ì
y);
2)ê
并¡
插?
到Ì
单Ì
£
链¢
中D的Ì
yINSERT_SET,ê
保À
证¡
è
所¨
´
是º
唯¡
一°
且¨
以°
非¤
递Ì
Y减?
方¤
式º
存ä
储ä
在¨
中D;
3)ê
出?
y,ê
对?
建¡
立¢
按ã
Y增?
;
4)ê
求¨
®
B的Ì
交?
C=A∩¨
C的Ì
5)ê
D=A∪¨
D的Ì
6)ê
求¨
A与®
称?
差?
E=(A-B)∪¨
(B-A)的Ì
7)ê
退ª
\n"
y字Á
示º
s;
switch(s)
case1:
inti;
cout<
a检¨
测a的Ì
y:
cin>
i;
if(a.IN_SET(i)==0)
cout<
结¨
为a0,ê
此ä
y在¨
中D"
else
为a1,ê
y不?
break;
case2:
listf;
f.INSERT_SET();
为a"
f.showArray();
case3:
a.DECREASESHOW();
case4:
listc;
c.AandB(a,b);
c.showArray();
case5:
listd;
d.AorB(a,b);
d.showArray();
case6:
liste;
e.symmetricDifference(a,b);
e.showArray();
case7:
default:
Errors:
invalidstatus"
system("
pause"
);
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 集合 运算