改写要求1:改写为单链表结构可以对任意长度整数集合求并集

#include <cstdlib>
#include <iostream> using namespace std;
struct LinkNode
{
int data;
LinkNode* next;
};
class SET
{
public:
struct LinkNode* creat(int x[],int len);
struct LinkNode* copy(LinkNode* aHead);
int notin(int elem,LinkNode* cHead)
{
LinkNode* p;
p=cHead;
while(p)
{
if(elem==p->data)
return ;
p=p->next;
}
return ;
} void insert(LinkNode* bHead,LinkNode* cHead);
void output(LinkNode* cHead)
{
LinkNode* p=cHead->next;
while(p)
{
cout<<p->data<<"\t";
p=p->next;
}
cout<<endl;
}
}; struct LinkNode* SET::creat(int x[],int len)
{
LinkNode* pHead=new LinkNode;
pHead->next=NULL;
LinkNode* p;
p=pHead;
for(int i=;i<len;i++)
{
LinkNode* newLinkNode=new LinkNode;
newLinkNode->next=NULL;
newLinkNode->data=x[i];
p->next=newLinkNode;
p=newLinkNode;
}
return pHead;
} struct LinkNode* SET::copy(LinkNode* aHead)
{
LinkNode* cHead=new LinkNode;
cHead->next=NULL;
LinkNode* p,*r;
p=aHead->next;
r=cHead;
while(p)
{
LinkNode* newLinkNode=new LinkNode;
newLinkNode->next=NULL;
newLinkNode->data=p->data;
p=p->next;
r->next=newLinkNode;
r=newLinkNode;
}
return cHead;
} void SET::insert(LinkNode *bHead,LinkNode* cHead)
{ LinkNode* q,*s,*t;
q=bHead->next;
s=cHead->next;
while(s)
{
t=s;
s=s->next;
}
while(q)
{
if(notin(q->data,cHead)!=)
{
LinkNode* newLinkNode=new LinkNode;
newLinkNode->next=NULL;
newLinkNode->data=q->data;
t->next=newLinkNode;
t=newLinkNode;
}
q=q->next;
} } int main(int argc, char *argv[])
{
int s1[]={,,,,};
int s2[]={,,,,,};
LinkNode* aHead,*bHead,*cHead,*Head;
SET set;
aHead=set.creat(s1,sizeof(s1)/sizeof(s1[]));
bHead=set.creat(s2,sizeof(s2)/sizeof(s2[]));
cHead=set.copy(aHead);
set.insert(bHead,cHead);
set.output(cHead);
system("PAUSE");
return EXIT_SUCCESS;
}

改写要求2:对任意长度的两个整数集合求交集

#include <cstdlib>
#include <iostream> using namespace std;
struct LinkNode
{
int data;
LinkNode* next;
};
class SET
{
public:
struct LinkNode* creat(int x[],int len);
struct LinkNode* copy(LinkNode* aHead);
int notin(int elem,LinkNode* cHead)
{
LinkNode* p;
p=cHead;
while(p)
{
if(elem==p->data)
return ;
p=p->next;
}
return ;
} struct LinkNode* insert(LinkNode* bHead,LinkNode* cHead);
void output(LinkNode* cHead)
{
LinkNode* p=cHead->next;
while(p)
{
cout<<p->data<<"\t";
p=p->next;
}
cout<<endl;
}
}; struct LinkNode* SET::creat(int x[],int len)
{
LinkNode* pHead=new LinkNode;
pHead->next=NULL;
LinkNode* p;
p=pHead;
for(int i=;i<len;i++)
{
LinkNode* newLinkNode=new LinkNode;
newLinkNode->next=NULL;
newLinkNode->data=x[i];
p->next=newLinkNode;
p=newLinkNode;
}
return pHead;
} struct LinkNode* SET::copy(LinkNode* aHead)
{
LinkNode* cHead=new LinkNode;
cHead->next=NULL;
LinkNode* p,*r;
p=aHead->next;
r=cHead;
while(p)
{
LinkNode* newLinkNode=new LinkNode;
newLinkNode->next=NULL;
newLinkNode->data=p->data;
p=p->next;
r->next=newLinkNode;
r=newLinkNode;
}
return cHead;
} struct LinkNode* SET::insert(LinkNode *bHead,LinkNode* cHead)
{ LinkNode* q,*t;
LinkNode* Head=new LinkNode;
q=bHead->next;
Head->next=NULL;
t=Head;
while(q)
{
if(notin(q->data,cHead)!=)
{
LinkNode* newLinkNode=new LinkNode;
newLinkNode->next=NULL;
newLinkNode->data=q->data;
t->next=newLinkNode;
t=newLinkNode;
}
q=q->next;
}
return Head;
} int main(int argc, char *argv[])
{
int s1[]={,,,,};
int s2[]={,,,,,};
LinkNode* aHead,*bHead,*cHead,*Head;
SET set;
aHead=set.creat(s1,sizeof(s1)/sizeof(s1[]));
bHead=set.creat(s2,sizeof(s2)/sizeof(s2[]));
cHead=set.copy(aHead);
Head=set.insert(bHead,cHead);
set.output(Head);
system("PAUSE");
return EXIT_SUCCESS;
}

C++程序设计实践指导1.5求两个整数集合并集改写要求实现的更多相关文章

  1. C++程序设计实践指导1.8求指定范围内的所有素数改写要求实现

    改写要求1:以指针为数据结构动态开辟存储空间 #include <cstdlib> #include <iostream> using namespace std; class ...

  2. C++程序设计实践指导1.3求任意整数降序数改写要求实现

    改写要求1:动态生成单链表存储 #include <cstdlib> #include <iostream> using namespace std; struct LinkN ...

  3. C++程序设计实践指导1.1删除序列中相同的数改写要求实现

    改写要求1:改写为以指针为数据结构 #include <iostream> #include <cstdlib> using namespace std; class ARP ...

  4. C++程序设计实践指导1.7超长数列中n个数排序改写要求实现

    改写要求1:将以上程序改写为适合超长整数 改写要求2:将以上程序改写为适合超长数列 改写要求3:将数列中指定位置m开始的n个结点重新按降序排序 改写要求4:输出指定位置m开始的n个结点的超长整数 #i ...

  5. C++程序设计实践指导1.2二维数组的操作运算改写要求实现

    改写要求1:改写为以单链表表示二维数组 #include <cstdlib> #include <iostream> using namespace std; struct L ...

  6. 设计算法,求AB两个整数集合的交集

    [本文链接] http://www.cnblogs.com/hellogiser/p/ab-set-intersection.html [分析] 思路1:排序法 对集合A和集合B进行排序(升序,用快排 ...

  7. 79 两个整数集合A和B,求其交集

    [本文链接] http://www.cnblogs.com/hellogiser/p/ab-intersect.html [题目] 两个整数集合A和B,求其交集. [分析]   1. 读取整数集合A中 ...

  8. c 求两个整数的最大公约数和最小公倍数

    //求最大公约数是用辗转相除法,最小公倍数是根据公式 m,n 的 最大公约数* m,n最小公倍数 = m*n 来计算 #include<stdio.h> //将两个整数升序排列 void ...

  9. 求两个整数的最大公约数GCM

    思路分析: (1)求差判定法:  如果两个数相差不大,可以用大数减去小数,所得的差与小数的最大公约数就是原来两个数的最大公约数.例如:求78和60的最大公约数.78-60=18,18和60的最大公约数 ...

随机推荐

  1. ios 动态修改UILabel字体大小

    - (IBAction)sliderChange:(id)sender {   NSLog(@"sliderChange");   UISlider *slider = (UISl ...

  2. QQ中未读气泡拖拽消失的实现(参照一位年轻牛B的博主的思路自己实现了一下)

    原文链接:http://kittenyang.com/drawablebubble/,博主年轻却很有思想.相仿的年纪,很佩服他! 首先分析拖拽时的图,大圆.不规则的图(实际上时有规律的不然也画不出来, ...

  3. struts 学习之问一

    今天在进行struts全局类型和局部类型转换时,发现一个问题,如下: 当输入一个点的坐标时,我使用全局转换提示错误,找不到类,当改变成局部类型转换时,可以成功转换,不知道这个是什么原因,难道全局不可以 ...

  4. 内存操作相关内核 API 的使用

    1.RtlCopyMemory .RtlCopyBytes.RtlMoveMemory: 2.RtlZeroMemory.RtlFillMemory: 3.RtlEqualMemory: 4.ExAl ...

  5. VLD 1.0 ReadMe翻译尝试

    近期想学习下VLD的实现,打算从最简单的V1.0版本看起.以下是V1.0版本自己尝试翻译下,最新的2.x版本似乎强大了很多. 简介 Visual C++提供了内置的内存检测机制,但其充其量只满足了最小 ...

  6. Lucene学习总结之五:Lucene段合并(merge)过程分析

    一.段合并过程总论 IndexWriter中与段合并有关的成员变量有: HashSet<SegmentInfo> mergingSegments = new HashSet<Segm ...

  7. ThinkPhp调用webservice

    模板页: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  8. EF 拉姆达 动态拼接查询语句

    EF 动态拼接查询语句 using System; using System.Collections.Generic; using System.IO; using System.Linq; usin ...

  9. AJAX Data 传值 无效的JSON基元:AJAX jQuery的方法,用c#WEBMETHOD-c#,jquery.

    我有这样的代码:I数据值,而不是连接字符串作为对象常量.为什么?看到这里 我的代码是这样的:- $.ajax({ url: "../Member/Home.aspx/SaveClient&q ...

  10. JS+html实现简单的飞机大战

    摘要:通过原生的js+html实现简单的飞机大战小游戏效果,如图所示: 实现代码如下: 1.自己的飞机实现 飞机html: <!DOCTYPE html> <html lang=&q ...