在List类中增加一个成员函数(方法):Find 在 class List entry中 template <class list entry> 应当有定义 int List<List_entry>: Find (const List_entry 8 ∥查找值为x的元素返回1没找到否则为x收中的位置 i int i=0 while( i<count & entry[i]=x)i++ if(i<count) return i; else return-1i 下面给出:产生若干互不相等的随机整数(集合元素插 入表的函数: Crtsetlist;进行集合“并"运算的函数: SetUnion及主函数man的源代码
在 List类中增加一个成员函数(方法):Find template <class List_entry> int List<List_entry>::Find(const List_entry &x) // 查找值为x的元素:返回-1没找到,否则为x在表中的位置 { int i=0; while( i<count && entry[i]!= x )i++; if(i<count) return i; else return -1; } 下面给出:产生若干互不相等的随机整数(集合元素)插 入表的函数:CrtSetList ;进行集合“并”运算的函数: SetUnion及主函数main()的源代码。 在class List_entry中 应当有定义
#include <stdlib.h #include <time h> #include"SQList. h void CrtSetList(List<nt>&,int;∥/产生集合元素插入表的原型声明 void setUnion(List<int>&, List<int>&);//集合"并"运算的原型声明 void visit(int &i) void main( {∥/声明Lst对象La,Lb类参数 List entry用nt>实例化 List<int>LaLb;//La,Lb代表集合 ints1,s2;∥/s1,s2是存放La,Lb大小的变量 time tt. srand(( unsigned)time(&t);∥/初始化随时间变化的随机数种孑 cout<< Please input Size of SetA & SetB =?=?(<=15 cin>>1>s2;/输入集合AB元素数<=15,以保证“并后La的元素数 =30
#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<<" n Set A={";//输出集合A的名称 Crtsetlist(La,s1);∥/刨建集合A并输出集合元素 cout<<"} nSet B={";∥/输出集合B的名称 CrtSetList(Lb, s2); SetUnion (La, Lb) /求集合A与集合B的"并 cout<<]n\n a Union B=f"i La traverse(visit); cout<<3\n
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个互不相等的整数插入顺序表 fint x, i,j; for(i=0;i<n;i++)∥用随机数发生器产生n个集合元素不得重复 {dox=rand%37;}∥/产生036间的随机整数(要求各元素值不等) while(j=L.Find(x)}=-1;∥/在集合中找x找不到则脱离循环 L. insert(L.size(),x);∥/插入表尾 cout<<x<< /输出x(集合元素边产生边输出)
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-)//从山b表中逐次删除素尾元素(不必移动元素) {Lb. remove(i-1,b);∥/调用删除算法,被删元素存入b k=La Find(b; /在La表中查找b if(k==1) /La表中找不到元素b La, insert( La size(,b);//插入至表尾 1//end for void visit(int &i) {cout<<i<<';}
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<<' '; }