用c++新建一个顺序表,采用顺序存储的方式,将输入的数据存入顺序表,并将输入的元素输出,并完成以下基本操作: (1).删除指定位置的元素; (2).向指定位置插入元素; (3).查找某元素在线性表中的位置。
时间: 2024-09-23 21:15:49 浏览: 45
C++顺序创建链式线性表
在C++中,你可以使用数组或动态内存管理的`std::vector`来创建一个简单的顺序表。这里我将展示如何使用数组作为例子,因为`std::vector`的行为类似,只是内部管理更智能。
首先,我们需要定义一个结构体(如`Element`)用于表示列表中的元素:
```cpp
struct Element {
int data; // 数据域
size_t position; // 位置域,用于记录元素的位置
};
```
然后我们可以创建一个顺序表类`SequentialList`:
```cpp
class SequentialList {
private:
Element* elements;
size_t size;
static const size_t DEFAULT_CAPACITY = 5;
public:
SequentialList() : elements(new Element[DEFAULT_CAPACITY]), size(0) {}
~SequentialList() {
delete[] elements;
}
void insert(int value, size_t position) {
if (position > size) {
resize(size + 1);
}
for (size_t i = size; i > position; i--) {
elements[i] = elements[i - 1];
}
elements[position].data = value;
elements[position].position = position;
size++;
}
void remove(size_t position) {
if (position >= size) {
throw std::invalid_argument("Position out of range");
}
for (size_t i = position; i < size - 1; i++) {
elements[i] = elements[i + 1];
}
delete &elements[size - 1]; // 调整大小并释放最后一个元素的空间
size--;
}
size_t find(int value) const {
for (size_t i = 0; i < size; i++) {
if (elements[i].data == value) {
return elements[i].position;
}
}
return -1; // 如果未找到,返回-1
}
// 其他辅助函数,如resize()
// ...
// 主要操作接口
void add(int value) {
insert(value, size);
}
void display() const {
for (size_t i = 0; i < size; i++) {
std::cout << "Element at pos " << elements[i].position << ": " << elements[i].data << std::endl;
}
}
};
int main() {
SequentialList list;
list.add(10);
list.add(20);
list.add(30);
list.display();
// 示例操作
list.remove(1); // 删除第二个元素(索引从0开始)
list.insert(40, 2); // 插入40到索引2
list.display();
std::cout << "Element '20' found at pos: " << list.find(20) << std::endl;
return 0;
}
```
在这个例子中,我们实现了插入、删除和查找的基本操作。注意,这只是一个基础版本,实际项目中可能会增加更多的错误检查和优化。
阅读全文