资源简介
集合的交、并和差运算的实现。用有序单链表表示集合,实现集合的交、并和差运算。对集合中的元素,用有序单链表进行存储。实现交、并、差运算时,不另外申请存储空间。充分利用单链表的有序性,算法有较好的时间性能。
代码片段和文件信息
#include
using namespace std;
typedef struct Node{
char data;
Node *next;
}Node*linkList;
#define SIZE sizeof(Node)
#define FALSE 0
#define TRUE 1
//初始化集合
void InitlinkList(linkList Head)
{
char ch;Node *p=Head;
Head->next=NULL;
Head->data=‘\0‘;
cin>>ch;
while(ch!=‘#‘)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=ch;
p->next=newNode;
p=p->next;
cin>>ch;
}
p->next=NULL;
}
//将表中的位置排序
void Sort(linkList head)
{
Node *p=head->next*q*r;
if(p!=NULL)
{
r=p->next;
p->next=NULL;
p=r;
while(p!=NULL)
{
r=p->next;
q=head;
while(q->next!=NULL&&q->next->data>p->data)
q=q->next; //在有序表中找插入*p的前驱结点*q
p->next=q->next; //将*p插到*q之后
q->next=p;
p=r;
}
}
}
//检查p1或p2所指向数据结点该不该加入到Head为起始的集合中^-^有点拗口,表达不是很好
int Check(char chlinkList Head)
{
Node *temp=Head->next;
int flag=TRUE;
while(temp!=NULL)
{
if(temp->data==ch){//不需要将数据插入
flag=FALSE;
return flag;
}
temp=temp->next;
}
return flag;
}
//合并两个集合
linkList Merge(linkList Head1linkList Head2)
{
linkList Head=(Node*)malloc(SIZE);
Head->data=‘\0‘;Head->next=NULL;
Node *p1=Head1->next;
Node *p2=Head2->next;
Node *p=Head;
while(p1!=NULL&&p2!=NULL)
{
if(p1->data==p2->data)
{
if(Check(p1->dataHead)==TRUE)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=p1->data;
p->next=newNode;
p=newNode;
p->next=NULL;
}
}
else
{
if(Check(p1->dataHead)==TRUE)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=p1->data;
p->next=newNode;
p=newNode;
p->next=NULL;
}
if(Check(p2->dataHead)==TRUE)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=p2->data;
p->next=newNode;
p=newNode;
p->next=NULL;
}
}
p1=p1->next;
p2=p2->next;
}
while(p1!=NULL)
{
if(Check(p1->dataHead)==TRUE)
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=p1->data;
p->next=new
- 上一篇:MFC颜色全,类型全的简易画板
- 下一篇:文件系统C++实现
相关资源
- 文件系统C++实现
- libstdc++.so.6.0.10 64位机
- 简易防火墙VC++
- 应届毕业生C++个人简历
- c++ 本地机子流量统计
- 水电煤气管理系统C++实现
- 飞翔的小鸟源代码c++下编写
- 3阶魔方通用算法带图形界面vc++,核心
- 双端队列C++实现 双端队列C++实现
- 求众数的两种方法
- 图像配准C++代码
- VC++MFC制作的画图工具
- C++ 三子棋代码
- C++ 创建读写PDF
- ISM C语言精简版
- 图书管理系统c++版
- c++课程设计论文-三子连珠游戏
- VC++课程设计一 福彩游戏(代码和报告
- C++读取磁盘扇区数据
- 基于Qt的学生报账系统
- VC++ 录音并生成wav文件
- VC++6.0_MFC基于对话框简单计算器设计
- C++程序基础课程设计——求取平均分
- fp增长树算法的C/C++实现
- 电子邮件收发程序c++版
- mfc c++版网络爬虫
- 跨平台的C++日志库
- RSA加密字符串 C++ Builder 6.0
- 数据结构课程设计c++排序算法的比较
- 数据结构课程设计c++图书管理系统源
评论
共有 条评论