用C++编写一个线性表模板类 实现:(1)数据成员:T data[ ],int length (2)方法成员:构造函数、复制构造函数、析构函数、 插入函数insert(int index, T value),删除函数delete(int index),查找函数find(T value).
时间: 2024-01-22 20:20:49 浏览: 96
数据结构殷人昆C++第一版习题答案第二章线性表
以下是用C++编写的线性表模板类:
```cpp
template <typename T>
class LinearList {
private:
T* data;
int length;
public:
// 构造函数
LinearList() {
data = nullptr;
length = 0;
}
// 复制构造函数
LinearList(const LinearList& list) {
length = list.length;
data = new T[length];
for (int i = 0; i < length; i++) {
data[i] = list.data[i];
}
}
// 析构函数
~LinearList() {
delete[] data;
}
// 插入函数
void insert(int index, T value) {
if (index < 0 || index > length) {
throw std::out_of_range("Index out of bounds");
}
T* newData = new T[length + 1];
for (int i = 0; i < index; i++) {
newData[i] = data[i];
}
newData[index] = value;
for (int i = index + 1; i < length + 1; i++) {
newData[i] = data[i - 1];
}
delete[] data;
data = newData;
length++;
}
// 删除函数
void remove(int index) {
if (index < 0 || index >= length) {
throw std::out_of_range("Index out of bounds");
}
T* newData = new T[length - 1];
for (int i = 0; i < index; i++) {
newData[i] = data[i];
}
for (int i = index; i < length - 1; i++) {
newData[i] = data[i + 1];
}
delete[] data;
data = newData;
length--;
}
// 查找函数
int find(T value) {
for (int i = 0; i < length; i++) {
if (data[i] == value) {
return i;
}
}
return -1;
}
};
```
使用示例:
```cpp
LinearList<int> list;
list.insert(0, 1);
list.insert(1, 2);
list.insert(2, 3);
std::cout << list.find(2) << std::endl; // 输出 1
list.remove(1);
std::cout << list.find(2) << std::endl; // 输出 -1
```
阅读全文