集合的运算代码

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

printf("\n\t 请在 0-3 中选择:"); scanf("%d",&sel); switch(sel) { case 1: printf("\n\tA B 集合的交集是:"); jiaoji(A,B,C); if(C->next!=NULL) { InsertSort(C); ListTraverse(C); } else { printf(" 空"); } C->next=NULL; break; case 2: printf("\n\tA B 的并集是:"); bingji(A,B,C); InsertSort(C); ListTraverse(C); C->next=NULL; break; case 3: chaji(A,B,C); break; case 0:exit(0);break; default:printf("\n\t 参数错误! ! !"); } getch(); system("cls"); }while(sel!=0); } else { printf("\n\t 输入的元素不能为空,请重新输入! !"); } } else { printf("\n\t\t 输入完成\n"); printf("\n\t 数据非法,请重新输入! ! !");
/**********差集函数**********/ void chaji(linklist &A,linklist &B,linklist &C) { linklist p,q,s,t; p=A->next; printf("\n\tA 与 B 的差集是:"); while(p!=NULL) { q= B->next; while((q!=NULL)&&(p->data!=q->data)) q=q->next; if(q==NULL) { s=(linklist)malloc(sizeof(Lnode)); s->data=p->data; s->next=C->next; C->next=s; } p=p->next; } InsertSort(C); ListTraverse(C); C->next=NULL; q=B->next; printf("\n"); printf("\n\tB 与 A 的差集是:"); while(q!=NULL) { p=A->next; while((p!=NULL)&&(p->data!=q->data)) p=p->next; if(p==NULL) { t=(linklist)malloc(sizeof(Lnode)); t->data=q->data; t->next=C->next; C->next=t; } q=q->next; } InsertSort(C); ListTraverse(C); C->next=NULL; }
/**********初始化函数**********/ linklist InitList(linklist &l) { l=(linklist)malloc(sizeof(Lnode)); l->next=NULL; return l; } /**********录入函数**********/ int input(linklist &l) { linklist s,p; char x,y; int a=1; scanf("%c",&x); while(x!='\n') { s=(linklist)malloc(sizeof(Lnode)); s->data=x; s->next=l->next; l->next=s; scanf("%c",&x); } p=l->next; while(p) { y=p->data; if(y<='9'&&y>='1'||y>='a'&&y<='z'||y>='A'&&y<='Z')a=1; else { printf("\n\t 元素%c 为非法数据!\n",y);a=0; } p=p->next; } return a; } /**********交集函数**********/ void jiaoji(linklist &A,linklist &B,linklist &C) { linklist p,q,t; p=A->next; while(p!=NULL) {
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> typedef struct node { int data; struct node* next; }Lnode,*linklist; /**********遍历函数**********/ void ListTraverse(linklist &l) { linklist p; p=l->next; while(p) { printf("\t%c",p->data); p=p->next; } } /**********排序函数**********/ linklist InsertSort(linklist &l)//直接插入排序 { linklist s=l->next,p; int t; while(s->next) { p=s->next; while(p) { if(p->data < s->data ) { t=p->data; p->data =s->data; s->data =t; } p=p->next; } s=s->next; } return l; }
void main() { while(1) { system("cls"); linklist A,B,C; InitList(A); InitList(B); InitList(C); int sel=0,a=1,b=1; printf("\n\n\n\n\t 求 AB 集合的交集和并集(请输入数字或者字母! ! !)\n"); printf("\n\t 请输入 A 集合的元素:"); a=input(A); if(A->next!=NULL) { printf("\n\t 请输入 B 集合的元素:"); b=input(B); } printf("\n\n\n\n\n"); if(a==1&&b==1) { if(A->next!=NULL&&B->next!=NULL) { printf("\n\t\t 输入成功\n"); printf("\n\t 按任意键进入主菜单:"); getch(); system("cls"); do { char menu[]= {"\n\n\n\t\t\t--------- ☆1.交集运算☆---------\n\n" "\t\t\t--------- ☆2.并集运算☆---------\n\n" "\t\t\t--------- ☆3.差集运算☆---------\n\n" "\t\t\t--------- ☆0. 退出☆---------\n\n" }; printf("\n\n\n\n\n\n\tA 集合中的元素是:"); ListTraverse(A); printf("\n"); printf("\n\tB 集合中的元素是:"); ListTraverse(B); printf("\n\n\n"); printf("%s",menu); printf("\n\n");
q=B->next; while((q!=NULL)&&(q->data!=p->data)) q=q->next; if((q!=NULL)&&(q->data==p->data)) { t=(linklist)malloc(sizeof(Lnode)); t->data=p->data; t->next=C->next; C->next=t; } p=p->next; } } /**********并集函数**********/ void bingji(linklist &A,linklist &B,linklist &C) { linklist p,q,t; p=A->next; while(p!=NULL) { t=(linklist)malloc(sizeof(Lnode)); t->data=p->data; t->next=C->next; C->next=t; p=p->next; } q=B->next; while(q!=NULL) { p=A->next; while((p!=NULL)&&(p->data!=q->data)) p=p->next; if(p==NULL) { t=(linklist)malloc(sizeof(Lnode)); t->data=q->data; t->next=C->next; C->next=t; } q=q->next; } }
} getch(); } }
Βιβλιοθήκη Baidu
相关文档
最新文档