如下程序代码声明了一个顺序表类SeqList。 typedef int ElemType; const int MaxSize = 10; class SeqList { public: SeqList(); //初始化顺序表 SeqList(ElemType a[], int n); //创建顺序表 --------------① SeqList(const SeqList & ); //复制函数 --------------② ~SeqList() {} //析构函数 bool insertLoc(int i, ElemType x); //在某个位置插入某个元素 -------------③ bool deleteLoc(int i); //删除某个位置上的元素 -------------④ bool deleteVal(ElemType x); //删除该元素 bool modify(int i, ElemType x); //修改某个位置的元素 int search(ElemType x); //查找某个元素 ElemType operator[](int i); //返回序号为i的元素 SeqList operator += (SeqList & s); //两个数组对应元素相加 -------------⑤ SeqList operator += (ElemType x); //数组中的每个元素加上x -------------⑥ friend ostream & operator << (ostream & out, SeqList & on); //输入------------⑦ friend istream & operator >> (istream & in , SeqList & s); //输出-------------⑧ private: ElemType arr[MaxSize]; int len; }; (1)从①和②中任选一个成员函数,写出其类外实现代码; (2)从③和④中任选一个成员函数,写出其类外实现代码; (3)从⑤和⑥中任选一个成员函数,写出其类外实现代码; (4)从⑦和⑧中任选一个成员函数,写出其类外实现代码。
时间: 2023-07-14 16:12:37 浏览: 116
(1) 选择复制函数SeqList(const SeqList &),类外实现代码如下:
SeqList::SeqList(const SeqList & s) {
len = s.len;
for (int i = 0; i < len; i++) {
arr[i] = s.arr[i];
}
}
(2) 选择删除某个位置上的元素的函数deleteLoc(int i),类外实现代码如下:
bool SeqList::deleteLoc(int i) {
if (i < 0 || i >= len) {
return false;
}
for (int j = i; j < len - 1; j++) {
arr[j] = arr[j + 1];
}
len--;
return true;
}
(3) 选择两个数组对应元素相加的函数SeqList operator += (SeqList & s),类外实现代码如下:
SeqList SeqList::operator += (SeqList & s) {
SeqList result;
if (len != s.len) {
cout << "两个数组长度不一致,无法相加" << endl;
return result;
}
for (int i = 0; i < len; i++) {
result.arr[i] = arr[i] + s.arr[i];
}
result.len = len;
return result;
}
(4) 选择输入运算符重载函数friend ostream & operator << (ostream & out, SeqList & on),类外实现代码如下:
ostream & operator << (ostream & out, SeqList & on) {
for (int i = 0; i < on.len; i++) {
out << on.arr[i] << " ";
}
return out;
}
阅读全文