线性表求两个集合的并集

来源:互联网 发布:强力手机数据恢复软件 编辑:程序博客网 时间:2024/05/19 03:25
#include<stdio.h>#define maxsize 100 //宏定义常量表示线性表的最大长度 struct Sqlist{    int elem[maxsize]; //线性表占用的数组空间    int last; //记录线性表中最后一个元素在数组elem[]中的位置};void initlist(Sqlist &L) //初始化线性表{    L.last=0;} void unionlist(Sqlist &la,Sqlist &lb) //求集合la和lb的并集{     int i,j,e;    for(i=0;i<lb.last;i++)    {       e=lb.elem[i]; j=0; //用e记录线性表lb中的元素       while((j<la.last)&&(la.elem[j]!=e)) j++; //扫描顺序表la,直到找到值为e的元素,或扫描到表尾还没找到       if(j==la.last)       {           la.elem[la.last]=e;la.last++; //将lb中值不为e的元素加入到la中,表长为la,lb去掉相同元素后的两表长之和       }    }}int main(){    int i;    char c;    struct Sqlist la,lb;    printf("初始化顺序表\n");    initlist(la);    initlist(lb);    printf("请输入集合a的元素\n");    for(i=0;i<maxsize;i++)    {         scanf("%d%c",&la.elem[i],&c);        la.last++;        if(c=='\n')        break;    }    printf("请输入集合b的元素\n");   for(i=0;i<maxsize;i++)   {        scanf("%d%c",&lb.elem[i],&c);        lb.last++;        if(c=='\n')        break;   }   unionlist(la,lb);   printf("集合a与b的并集为:\n");   for(i=0;i<la.last;i++)   printf("%-4d",la.elem[i]);   printf("\n");   return 0;}

0 0
原创粉丝点击