用c++语言建立一个顺序表,初始化的元素为{1,2,3,4},实现对顺序表插入新元素,删除一个元素,查找,输出,和销毁顺序表这些功能
时间: 2024-11-09 15:29:22 浏览: 22
在C++中,我们可以使用数组结构简单地创建一个顺序表(也称为线性表)。这里我们仅展示基本操作的实现,例如初始化、插入、删除、查找和输出。请注意,顺序表并不是动态数据结构,因此我们需要预先知道列表的大小。
```cpp
#include <iostream>
// 定义顺序表的结构
template <typename T>
class SequenceList {
private:
T* elements; // 存储元素的指针
int size; // 当前元素的数量
int capacity; // 数组容量
public:
// 构造函数,初始化元素
SequenceList(int initialCapacity = 5) : capacity(initialCapacity), size(0) {
elements = new T[capacity];
for (int i = 0; i < initialCapacity; ++i) {
if (i < 4)
elements[i] = static_cast<T>(i + 1);
else
elements[i] = T(); // 初始化剩余位置为空
}
}
~SequenceList() { // 析构函数,释放内存
delete[] elements;
}
// 插入元素
void insert(T value, int index = -1) {
if (index == -1) {
if (size == capacity)
resize(capacity * 2); // 扩容
size++;
elements[size - 1] = value;
} else {
std::rotate(elements + index, elements + index + 1, elements + size); // 移动元素
elements[index] = value;
size++;
}
}
// 删除元素
void remove(int index) {
if (index >= 0 && index < size) {
std::copy(elements + index + 1, elements + size, elements + index); // 后移元素
elements[size - 1] = T();
size--;
}
}
// 查找元素
bool find(T value) const {
for (int i = 0; i < size; ++i)
if (elements[i] == value)
return true;
return false;
}
// 输出元素
void print() const {
for (int i = 0; i < size; ++i)
std::cout << elements[i] << " ";
std::cout << std::endl;
}
private:
// 动态扩容
void resize(int newSize) {
T* newArray = new T[newSize];
for (int i = 0; i < size; ++i)
newArray[i] = elements[i];
delete[] elements;
elements = newArray;
capacity = newSize;
}
};
int main() {
SequenceList<int> list;
list.insert(5);
list.print();
if (list.find(3))
std::cout << "Found 3" << std::endl;
list.remove(1);
list.print();
return 0;
}
```
在这个例子中,我们创建了一个`SequenceList`模板类,包含了上述的基本操作。注意,这个简单的实现并没有处理错误情况,比如插入索引超出范围、删除不存在的元素等,实际应用中需要添加适当的错误检查。同时,C++标准库中的`std::vector`更推荐作为实现顺序表的标准选择,因为它提供了更好的性能和安全性。
阅读全文