要求是这样的,给定两个顺序表a,b。取a,b的并集到a,并使之有序,
比如a中元素为:2,4,7
b中元素为:3,4,5
那么合并之后a为:2,3,4,5,7
main.cpp
# include<iostream>
# include"seqList.h"
using namespace std;
template <typename T>
void mergeSeq(seqList<T> &a, seqList<T> &b);
int main()
{
seqList<int> myseq(20);
for (int i = 1;i <=3 ;i++)
myseq.push_back( 10-2* i);//8,6,4
myseq.sort();
myseq.traver();
cout << endl;
seqList<int> myseq2(20);
myseq2.push_back(3);
myseq2.push_back(4);
myseq2.push_back(5);//3,4,5
myseq2.traver();
cout << endl;
mergeSeq<int>(myseq, myseq2);
myseq.traver();
cout << endl;
system("pause");
return 0;
}
template <typename T>
void mergeSeq(seqList<T> &a, seqList<T> &b)
{
int i = 0;
for (;i <b.length();i++)
{
if (!a.locateElem(b.getElem(i+1)))//如果a中没有b中的元素
a.push_back(b.getElem(i+1));
}
a.sort();
}
seqList的成员函数sort:
template <typename T>
void seqList<T>::sort() //默认从小到大排序
{
//冒泡排序
for (int i = 0;i < iLen - 1;i++)
for (int j = 0;j < iLen - i-1;j++)
{
if (pT[j] > pT[j + 1])
{
pT[j] = pT[j] + pT[j + 1];
pT[j + 1] = pT[j] - pT[j + 1];
pT[j] = pT[j] - pT[j + 1];
}
}
}