用c++封装线性表,实现线性表的各项操作,包括查看线性表是否为空,插入元素,删除元素,修改元素,查找元素,获取长度,打印线性表,清空线性表
时间: 2024-03-08 20:46:16 浏览: 18
好的,我可以为您介绍一下如何用 C++ 封装线性表,并实现线性表的各项操作。
首先,我们可以定义一个线性表类 List,其中包含私有成员变量 data 和 size,分别表示线性表的元素和大小。
```cpp
#include <iostream>
using namespace std;
class List {
private:
int *data; // 线性表的元素
int size; // 线性表的大小
public:
// 构造函数
List(int n = 0) {
size = n;
data = new int[size];
}
// 复制构造函数
List(const List& other) {
size = other.size;
data = new int[size];
for (int i = 0; i < size; i++) {
data[i] = other.data[i];
}
}
// 析构函数
~List() {
delete[] data;
}
// 判断线性表是否为空
bool isEmpty() const {
return size == 0;
}
// 获取线性表的大小
int getSize() const {
return size;
}
// 获取线性表的元素
int& operator[](int index) {
return data[index];
}
// 插入元素到指定位置
void insert(int index, int value) {
if (index < 0 || index > size) {
return;
}
int *temp = new int[size + 1];
for (int i = 0; i < index; i++) {
temp[i] = data[i];
}
temp[index] = value;
for (int i = index + 1; i <= size; i++) {
temp[i] = data[i - 1];
}
delete[] data;
data = temp;
size++;
}
// 删除指定位置的元素
void remove(int index) {
if (index < 0 || index >= size) {
return;
}
int *temp = new int[size - 1];
for (int i = 0; i < index; i++) {
temp[i] = data[i];
}
for (int i = index; i < size - 1; i++) {
temp[i] = data[i + 1];
}
delete[] data;
data = temp;
size--;
}
// 修改指定位置的元素
void modify(int index, int value) {
if (index < 0 || index >= size) {
return;
}
data[index] = value;
}
// 查找指定元素的位置
int find(int value) const {
for (int i = 0; i < size; i++) {
if (data[i] == value) {
return i;
}
}
return -1;
}
// 打印线性表
void print() const {
for (int i = 0; i < size; i++) {
cout << data[i] << " ";
}
cout << endl;
}
// 清空线性表
void clear() {
delete[] data;
size = 0;
data = new int[size];
}
};
```
上面的代码实现了线性表的插入、删除、修改、查找、打印、清空等操作,其中插入和删除操作会动态分配内存,以保证线性表的大小和元素正确。
使用时可以按照以下方式创建一个线性表对象,然后调用线性表的各项操作:
```cpp
List list(10); // 创建一个大小为 10 的线性表对象
// 判断线性表是否为空
bool empty = list.isEmpty();
// 在第 3 个位置插入元素 5
list.insert(3, 5);
// 删除第 5 个元素
list.remove(5);
// 修改第 2 个元素为 7
list.modify(2, 7);
// 查找元素 7 的位置
int index = list.find(7);
// 获取线性表的大小
int size = list.getSize();
// 打印线性表
list.print();
// 清空线性表
list.clear();
```
以上就是一个包含各项操作的线性表类的实现,希望能对您有所帮助。