求一个线性表实现2个集合的并、交集运算(顺序表、链表均可)的c++编程,谢谢 啊

如题所述

第1个回答  2011-12-22
#include <iostream>
using namespace std;
typedef struct Node{
int num;
bool flag;//判断是不是交集中的数据
struct Node *next;
};
typedef struct Node* Set;
Set buildSet(){
Set head,ptr,qtr;
int count;//集合元素个数
head=new Node();
ptr=head;
cout<<"请输入集合中的元素个数:";
cin>>count;
cout<<"请输入集合中的元素:"<<endl;
while(count>0)
{
qtr=new Node();
cin>>qtr->num;
qtr->flag=false;
qtr->next=NULL;

ptr->next=qtr;
ptr=ptr->next;
count--;
}
ptr=head->next;
delete head;
head=NULL;
qtr=NULL;
return ptr;
}
void findCommonData(Set set1,Set set2)//循环集合set1,在set2找是否相同
{
Set ptr=set1,qtr=set2;
if(set1!=NULL&&set2!=NULL)
{
while(ptr!=NULL){
qtr=set2;
while(qtr!=NULL)
{
if(qtr->num==ptr->num){
ptr->flag=true;
break;
}
qtr=qtr->next;
}
ptr=ptr->next;
}
}
}
void printSet(Set set){
Set ptr=set;
cout<<"该集合的元素如下: ";
while(ptr!=NULL){
cout<<ptr->num<<" ";
ptr=ptr->next;
}
cout<<endl;
}
void printCommonData(Set set){
Set ptr=set;
cout<<"集合的共同元素如下: ";
while(ptr!=NULL){
if(ptr->flag==true)cout<<ptr->num<<" ";
ptr=ptr->next;
}
cout<<endl;
}
void freeSet(Set set){
Set ptr=set,qtr;
while(ptr!=NULL)
{
qtr=ptr;
ptr=ptr->next;
delete qtr;
}
}
int main()
{
Set set1,set2;
set1=buildSet();
set2=buildSet();

findCommonData(set1,set2);

printSet(set1);
printSet(set2);
freeSet(set2);
printCommonData(set1);
}赞同1| 评论

用c++编写程序,求两线性表的交集,并集,差集。
b;int c,d;cout<<"请输入第一个闭区间的a,b"<<endl;cin>>a>>b;cout<<"请输入第二个闭区间的c,d"<<endl;cin>>c>>d;if(a>b||c>d) {cout<<"输入的区间不合法"<<endl;}else{if(d<a){cout<<"交集为:空集"<<endl;

哪位大神帮忙检查一下这个程序,求2个链接的并集,不知道哪个错误了_百 ...
} void CreateListR(LinkNode *L, ElemType a[], int n) \/\/尾插法建立链表{LinkNode *s, *r;r = L;for (int i = 0; i<n; i++){s = (LinkNode *)malloc(sizeof(LinkNode));s->data = a[i];r->next = s;r = s;}r->next = NULL;}void SortList(LinkNode *L) \/...

[线性表 链表实验报告]链表线性表
1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。2.初始化并建立顺序表。3.编写顺序表输出算法。(内存中开辟的单元数为8)4.依次插入3,21,15三个数,分别插入在第4,6和2位置,每插入一次都要输出一次顺序表。5.删除第5,第3和第12个位置上的元素,每删除一个元素都...

用C语言创建一个空线性表,并完成插入删除等基本操作,可就是不知道怎么...
亲,你用的是顺序表的结构体和初始化,其它用的却是链表的操作,建议多看看数据结构的书。

用C++建立一个线性表,输入10个数,并按从小到大显示出来
Status ListInsert_Sq(SqList &L,int i,ElemType e) \/* 算法2. 4 *\/ { \/* 初始条件:顺序线性表L 已存在,1≤i≤ListLength(L)+1 *\/ \/* 操作结果:在L 中第i 个位置之前插入新的数据元素e,L 的长度加1 *\/ ElemType *newbase,*q,*p;if(i<1||i>L.length+1) \/* i 值不...

设线性表有n个元素,以下操作中,( )在顺序表上实现比在链表中实现效率更...
【答案】:A 由于顺序表具有随机存取特性,所以,和链表相比输出第i个元素时效率很高。

试编写一个算法,将两个有序线性表合成一个有序线性表...最好是在c++...
if(i<1||i>L->length+1) return 0;if(L->length==L->listsize) \/\/存储空间不够,增加一个 { L->data=(ElemType *)realloc(L->data,(L->listsize+1)*sizeof(ElemType));L->listsize++; \/\/重置存储空间长度 } for(j=L->length;j>=i;j--)L->data[j]=L->data[j-1]; \/...

C语言创建一个线性表,然后输出线性表,如何编写程序?
printf("输入的顺序表元素:\\n");for(i=0;i<L.length;i++)printf("%d ",L.elem[i]);printf("\\n");} \/\/在指定位置插入元素 StatusListInsert(SqList &L,int i,ElemType e){ ElemType *p,*q,*newbase;if(i<1||i>L.length+1){ printf("插入位置错误\\n");return(ERROR);} if...

怎样C++实现线性表的建立、插入、删除、倒序?
cout<<" * s:二个递增顺序表求交集 t: 二个递增顺序表求并集 *"<<endl; cout<<" * u:逆置线性表 v: 删除特定元素 *"<<endl; cout<<" * w: x: *"<<endl; cout<<" * z:退出 *"<<endl; cout<<" ***"<<endl; cout<<" 请输入你的选择:"; cin>>ch; switch (ch) { case 'a':...

如何建立一个线性表,用c++的基本语法是什么?
用c++建立一个线性表有以下5步:1、准备数据:定义了顺序表的最大长度MAXLEN、顺序表数据元素的类型DATA以及顺序表的数据结构SLType。在数据结构SLType中,Listen为顺序表已存结点的数量,也就是当前顺序表的长度,ListData是一个结构数组,用来存放各个数据结点。我们认为该顺序表是一个班级学生的记录。...

相似回答