⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exp.cpp

📁 这是本人精心搜集的关于常用图论算法的一套源码
💻 CPP
字号:
#include <stdlib.h>
#include <time.h>
#include "SQList.h"
void CrtSetList(List<int>&,int);  // 为集合产生若干互不相等的整数插入表的原型声明
void SetUnion(List<int>&,List<int>&);// 集合"并"运算的原型声明
void visit(int &i);
void main()
{ //声明List对象La,Lb,类参数List_entry用<int>实例化
  List<int> La,Lb; // La,Lb代表集合
  int s1, s2;  // s1, s2是存放La,Lb大小的变量
  time_t t;   srand((unsigned)time(&t)); //初始化随时间变化的随机数种子
  cout<<"Please input Size of SetA && SetB =? =? (<=15)";
  cin>>s1>>s2;  // 输入集合A,B元素数<=15, 以保证"并"后La的元素数<=30
  cout<<"\nSet A = { ";  // 输出集合A的名称
  CrtSetList(La,s1);     // 创建集合A并输出集合元素
  cout<<"}\nSet B = { ";// 输出集合B的名称
  CrtSetList(Lb,s2);
  SetUnion(La,Lb);  // 求集合A与集合B的"并" 
  cout<<"}\n\n A Union B = { ";  
  La.traverse(visit);  cout<<" }\n";  
}
void CrtSetList(List<int>&L,int n) // 为集合产生n个互不相等的整数插入顺序表
{int x,i,j ;
 for(i=0; i<n; i++)      //用随机数发生器产生n个集合元素,不得重复
  { do{ x=rand() % 37; } // 产生0-36间的随机整数(要求各元素值不等)
     while((j=L.Find(x))!=-1);  // 在集合中找x, 找不到则脱离循环
     L.insert(L.size(),x);     // 插入表尾
    cout<<x<<"  ";              // 输出x ( 集合元素边产生边输出)
  }
}
void  SetUnion(List<int>&La,List<int>&Lb)
// 将La表和Lb表所表示的集合做"并",存入La表,Lb表被清空。
{int i,k,b;
 for(i=Lb.size(); i>0; i--)    //从Lb表中逐次删除素尾元素,这样不必移动元素
    { Lb.remove(i-1,b);        //调用删除算法,被删元素存入b
      k=La.Find(b);           // 在La表中查找b
      if(k==-1)               //La表中找不到元素b
    	La.insert(La.size(), b); // 插入至la表尾
    } //end_for
}
void visit(int &i)
 { cout<<i<<' '; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -