资源简介
1.编制一个能演示执行集合的并、交和差运算的程序。
2.集合的元素限定为小写字母符[′a′….′z ′],集合的大小n<27。
3.集合输入的形式为一个以"回车符"为结束标志的字符串,串中字符顺序不限,且允许出现重复字符或非法字符,程序应能自动滤去。
4.输出的运算结果字符串中将不含重复字符或非法字符。
5.演示程序以用户和计算机的对话方式执行。
代码片段和文件信息
// 集合的并交差运算.cpp : 定义控制台应用程序的入口点。
// 编写环境:VS2013
#include “stdafx.h“
#include “stdio.h“ //提供清除输入缓存的函数
#include //提供设置输出格式的函数
#include
using namespace std;
#define SIZE sizeof(Node)
#define FALSE 0
#define TRUE 1
//定义节点结构
typedef struct Node{
char data;
Node *next;
}Node *linkList;
//检查选定字符能否添加到集合中
int Check(char ch linkList Head)
{
Node *temp = Head->next;
int flag = TRUE;
while (temp != NULL)
{
if (temp->data == ch){
//选定字符不能插入集合中
flag = FALSE;
return flag;
}
temp = temp->next;
}
return flag;
}
//检查集合A中的元素,集合B中是否存在
int IsExist(char data linkList Head)
{
Node *pt = Head->next;
int flag = FALSE;
while (pt != NULL)
{
if (pt->data == data)
//已存在
return flag = TRUE;
pt = pt->next;
}
return flag;
}
//检查集合A中的元素,集合B中是否存在
int IsExist2(char data linkList Head)
{
Node *p = Head->next;
int flag = FALSE;
while (p != NULL)
{
if (p->data == data)
return flag;
p = p->next;
}
return flag = TRUE;
}
//初始化集合
linkList InitlinkList()
{
int i = 1;
int ch_1;
char ch;
linkList Head = (Node*)malloc(SIZE);
Head->data = ‘\0‘; Head->next = NULL;
Node *p = Head;
cin >> ch;
// ‘#’ 手动终止输入,当输入满26个字符时,自动终止输入
while (ch != ‘#‘ && i <= 26)
{
ch_1 = (int)ch;
//只录入26个小写字母,实现输入过滤
if (ch_1 <= 122 && ch_1 >= 97){
if (Check(ch Head) == TRUE)
{
i++;
Node *newNode = (Node*)malloc(SIZE);
newNode->data = ch;
cout << ch << setw(3) << “++“;
p->next = newNode;
p = newNode;
p->next = NULL;
}
else
{
cout << ch << setw(4) << “--“;
}
}
else
{
cout << ch << setw(4) << “--“;
}
if (i == 26)
{
cout << “集合已满“ << endl;
}
cin >> ch;
}
p->next = NULL;
//清空输入缓存数据,防止多余输入内容满溢到下一个集合
fflush(stdin);
cout << endl << endl;
return Head;
}
//将表中元素进行排序
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->datadata)
q = q->next; //在有序表中查找插入*p的前驱结点*q
p->next = q->next; //将*p插到*q之前
q->next = p;
p = r;
}
}
}
//集合并运算
linkList Merge(linkList Head1 linkList 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->data Head) == TRUE)
{
Node *newNode = (Node*)malloc(SIZE);
newNode->data = p1->data;
p->next = newNode;
p = newNode;
p->next = NULL;
}
}
else
{
if (Check(p1->data Head) == TRUE)
{
Node *newNode = (Node*)malloc(SIZE);
newNode->data = p1->data;
p->next = newNode;
p = newNode;
p->next = NULL;
}
if (Check(p2->data Head) == TRUE)
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- c语言小学生自然数四则运算测试程序
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- 实验报告:数据结构长整数四则运算
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
评论
共有 条评论