利用顺序表实现集合的并运算

来源:互联网 发布:js怎么让按钮不可点击 编辑:程序博客网 时间:2024/05/21 16:33
/*利用顺序表实现集合的并运算*/#include <iostream>#include<algorithm>#include <conio.h>#include<stdlib.h>#include<time.h>using namespace std;const int N=20;template <class DataType>class SeqList {private:   DataType* list;   int MaxSize;   int size;public:   SeqList(int max); //构造函数,初始化得到一个容量为max的空表    ~SeqList();     //析构函数,释放线性表占用的存储空间    int Size();  //求线性表的长度     int Maxsize();  //求线性表的最大元素个数   int Find(const DataType& x); //在线性表中查找元素x    DataType GetData(int i);  //取线性表的第i个元素    void Insert(const DataType& x);  //若有序表中不存在x,则插入使得表仍然有序;否则不插入   void Delete(int i);  // 删除第i个元素   void Print();      void operator =(const SeqList<DataType>& other);    SeqList<DataType> operator +(const SeqList<DataType>& other); };template <class DataType>int SeqList<DataType>::Find(const DataType& x){for(int i=0;i<size;++i)if(list[i]==x)return 0;return 1;}template <class DataType>SeqList<DataType>::SeqList(int max) {   list = new DataType[max];   MaxSize = max;   size = 0;}template <class DataType>SeqList<DataType>::~SeqList() {   delete []list;}template <class DataType>int SeqList<DataType>::Size() {   return size;}template <class DataType>int SeqList<DataType>::Maxsize() {   return MaxSize;}template <class DataType>DataType SeqList<DataType>::GetData(int i) {   return list[i];}template <class DataType>void SeqList<DataType>::Insert(const DataType& x) {   if(size==MaxSize) {       cout<<"顺序表已满,插入错误!"<<endl;      exit(0);   }    //请在此处完成函数   //注意:若表中已有x,则不需要插入;否则,按序插入   if(Find(x)) list[size++]=x; if(size!=1) for(int i=size-1;i>0;--i) if(list[i]<list[i-1])swap(list[i],list[i-1]);  }template <class DataType>void SeqList<DataType>::Print() {   for(int i=0;i<=size-1;i++) cout<<list[i]<<"  ";   cout<<endl;}template <class DataType>  void  SeqList<DataType>::operator =(const SeqList<DataType>& other){  //重载操作符=,请在此处实现函数MaxSize = other.MaxSize; size = other.size;for(int i=0;i<size;++i)list[i] = other.list[i];}template <class DataType>  SeqList<DataType>  SeqList<DataType>::operator +(const SeqList<DataType>& other){ //重载操作符+,请在此处实现函数MaxSize += other.MaxSize; for(int i=0;i<other.size;++i) this->Insert(other.list[i]);return *this;}void main(){SeqList<int> L1(N),L2(N),L3(N);srand((unsigned)time(NULL));while(L1.Size()<N/2){   L1.Insert(int(rand())%100);}L1.Print();while(L2.Size()<N/2){   L2.Insert(int(rand())%100);}L2.Print();    L3=L1+L2;   L3.Print();getch();}

0 0
原创粉丝点击