标头.h
#pragma once #pragma once #include <iostream> //定义在“seqList.h”中 #include <stdlib.h> using namespace std; const int defaultSize = 100; template < class E> class SeqList { protected: E* data; //存放数组 int maxSize; //最大可容纳表项的项数 int last; //当前已存表项的最后位置 //void reSize(int newSize); //改变数组空间大小 public: SeqList(int sz = defaultSize) { maxSize = sz; data = new E[maxSize]; last = -1; } //构造函数 SeqList(SeqList<E>& L) { this->maxSize = L.maxSize; this->last = L.last; this->data = new E[maxSize]; for (int i = 0; i <= last; i++) { this->data[i] = L.data[i]; } } //复制构造函数 int Size() const { return maxSize; } //求表最大容量 int Length() const { return last + 1; } //计算表长度 int Search(E x) const { E e = x; int ret = -1; for (int i = 0; i <= last; i++) { if (data[i] == e) { ret = i; break; } } return ret; } //搜索x在表中位置,函数返回表项序号 int Locate(int i) const { if (i >= 1 && i <= last + 1) { return --i; } else { return -2; } } //定位第 i 个表项,函数返回表项序号 bool getData(int i, E& x) const { x = data[i]; return true; } //取第i个表项的值 bool Insert(int i, E x) { for (int j = last; j >= i; j--) { data[j + 1] = data[j]; } data[i] = x; last++; return true; } //插入 bool Remove(int i, E& x) { x = data[i]; for (int j = i; j < last; j++) { data[j] = data[j + 1]; } last--; return true; } //删除 void show() { for (int i = 0; i <= last; i++) { cout << data[i] << " "; } putchar('\n'); } };
MyKit.h
#pragma once #include"标头.h" class MyKit { public: static void Union(SeqList<int>& L1, SeqList<int>& L2) { int last1 = L1.Length() - 1; int last2 = L2.Length() - 1; int x; for (int i = 0; i <= last2; i++) { L2.getData(i, x); if (L1.Search(x) < 0) { ++last1; L1.Insert(last1, x); } } } };
main:
#include"MyKit.h" #include"标头.h" int main() { SeqList<int> L1,L2; L1.Insert(0, 9); L1.Insert(0, 6); L1.Insert(1, 3); cout << "L1:" << endl; L1.show(); for (int i = 0; i <= 9; i++) { L2.Insert(0, i); } cout << "L2:" << endl; L2.show(); MyKit::Union(L1,L2); cout << "Union:" << endl; L1.show(); }