用C++写出2.编写一个线性表模板类 实现:(1)数据成员:T data[ ],int length (2)方法成员:构造函数、复制构造函数、析构函数、 插入函数insert(int index, T value),删除函数delete(int index),查找函数find(T value).
时间: 2024-02-06 13:09:05 浏览: 63
基于c++语言模板实现的线性表
4星 · 用户满意度95%
以下是线性表模板类的实现:
```cpp
#include <iostream>
using namespace std;
template <typename T>
class LinearList {
private:
T* data; // 数据成员
int length;
public:
LinearList(int size = 10) { // 构造函数
data = new T[size];
length = 0;
}
LinearList(const LinearList<T>& list) { // 复制构造函数
int size = list.length;
data = new T[size];
for (int i = 0; i < size; ++i) {
data[i] = list.data[i];
}
length = size;
}
~LinearList() { // 析构函数
delete[] data;
}
void insert(int index, T value) { // 插入函数
if (index < 0 || index > length) {
cout << "Invalid index!" << endl;
return;
}
if (length == 0) {
data[0] = value;
length++;
return;
}
if (length == index) {
data[length] = value;
length++;
return;
}
for (int i = length; i > index; --i) {
data[i] = data[i - 1];
}
data[index] = value;
length++;
}
void erase(int index) { // 删除函数
if (index < 0 || index >= length) {
cout << "Invalid index!" << endl;
return;
}
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;
}
void print() { // 打印函数
for (int i = 0; i < length; ++i) {
cout << data[i] << " ";
}
cout << endl;
}
};
int main() {
LinearList<int> list;
list.insert(0, 1);
list.insert(0, 2);
list.insert(2, 3);
list.insert(1, 4);
list.print(); // 输出:2 4 1 3
list.erase(1);
list.print(); // 输出:2 1 3
cout << list.find(1) << endl; // 输出:1
return 0;
}
```
在上述代码中,我们首先定义了一个模板类 `LinearList`,其中包含了数据成员 `data` 和 `length`,分别用于存储线性表的元素和长度。接着,我们实现了构造函数、复制构造函数、析构函数、插入函数、删除函数和查找函数。
其中,插入函数的实现方法为:从线性表的最后一个元素开始,将它向后移动一个位置,直到插入位置。而删除函数的实现方法为:从被删除元素的位置开始,将它后面的元素依次向前移动一个位置。查找函数的实现方法为:遍历线性表中的所有元素,直到找到与给定值相等的元素或者遍历完所有元素。
最后,我们在 `main` 函数中定义了一个 `LinearList<int>` 类型的对象 `list`,并调用了它的插入、删除和查找函数,最终输出了线性表中的元素。
阅读全文