改写要求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. 将String转化为Long,并将Long转化为Date

    package org.ljh.test.javaee; import java.text.SimpleDateFormat; import java.util.Date; public class ...

  2. python运维开发(二十三)---tornado框架

    内容目录: 路由系统 模板引擎 cookie 加密cookie 自定义api 自定义session 自定义form表单验证 异步非阻塞 web聊天室实例 路由系统 路由系统其实就是 url 和 类 的 ...

  3. Bone Collector II(HDU 2639 DP)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  4. information_schema.routines 学习

    information_schema.routines 用户查看mysql中的routine信息 1.information_schema.routines 表中的常用列: 1.

  5. 给兄弟说下如何处理Debian下常见的apache2的几个问题

    这段时间总是有兄弟问到在linux下的apache2配置,其实很简单,这里统一答复下. 一.安装 当然是apt-get install 最简单了, 顺便把php5和GD什么的一起装上吧,基本上不用配置 ...

  6. FFmpeg深入分析之零-基础 <第一篇>

    FFmpeg是相当强大的多媒体编解码框架,在深入分析其源代码之前必须要有基本的多媒体基础知识,否则其源代码会非常晦涩难懂.本文将从介绍一些基本的多媒体只是,主要是为研读ffmpeg源代码做准备,比如一 ...

  7. HDU 1104 Remainder (BFS)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1104 题意:给你一个n.m.k,有四种操作n+m,n-m,n*m,n%m,问你最少经过多少步,使得最后 ...

  8. css案例学习之div a实现立体菜单

    效果 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  9. Reverse Linked List 解答

    Question Reverse a singly linked list. Solution 1 -- Iterative Remember to set head.next = null or i ...

  10. java面试题集3

    一.选择题 1.下面程序的运行结果是 int i=0; while(true){ if(i++>10)  break; System.out.println(i); }1-11 2.下面程序的运 ...