2.编写一个线性表模板类 实现:(1)数据成员:T data[ ],int length (2)方法成员:构造函数、复制构造函数、析构函数、 插入函数insert(int index, T value),删除函数delete(int index),查找函数find(T value).
时间: 2024-01-22 07:20:33 浏览: 30
下面是一个线性表模板类的实现,包括构造函数、复制构造函数、析构函数、插入函数、删除函数和查找函数:
```cpp
template<class T>
class LinearList {
private:
T* data;
int length;
public:
LinearList(int size) {
data = new T[size];
length = 0;
}
LinearList(const LinearList& other) {
data = new T[other.length];
length = other.length;
for (int i = 0; i < length; i++) {
data[i] = other.data[i];
}
}
~LinearList() {
delete[] data;
}
void insert(int index, T value) {
if (index < 0 || index > length) {
throw std::out_of_range("Index out of range");
}
if (length == index) {
data[length++] = value;
} else {
for (int i = length; i > index; i--) {
data[i] = data[i - 1];
}
data[index] = value;
length++;
}
}
void remove(int index) {
if (index < 0 || index >= length) {
throw std::out_of_range("Index out of range");
}
for (int i = index; i < length - 1; i++) {
data[i] = data[i + 1];
}
length--;
}
int find(T value) {
for (int i = 0; i < length; i++) {
if (data[i] == value) {
return i;
}
}
return -1;
}
};
```
其中,构造函数会动态分配一个大小为 size 的数组,复制构造函数会复制另一个线性表的数据,析构函数会释放动态分配的数组内存。插入函数会在指定位置插入一个元素,如果位置超出了线性表的范围则抛出异常;删除函数会删除指定位置的元素,如果位置超出了线性表的范围则抛出异常;查找函数会在线性表中查找指定元素,找到则返回它的位置,否则返回 -1。