顺序表类,包括了初始化、赋值、遍历、取值、求表长、插入、查找、删除和退出等基本操作
时间: 2024-10-12 09:14:01 浏览: 8
顺序表是一种线性数据结构,它通过数组的形式存储元素,每个元素都有一个连续的内存地址。以下是顺序表类中一些基本操作的描述:
1. 初始化 (Constructor): 创建一个新的顺序表,指定初始容量。例如:
```cpp
SequenceList(int capacity)
: elements(new int[capacity]), size(0), capacity(capacity) {}
```
2. 赋值 (Assignment): 将一个顺序表的所有元素复制到另一个表中。如:
```cpp
void assign(const SequenceList& other)
{
if (other.size > capacity) resize(other.size);
for (int i = 0; i < other.size; ++i) elements[i] = other.elements[i];
size = other.size;
}
```
3. 遍历 (Traversal): 使用for循环访问每个元素。例如:
```cpp
void traverse() const
{
for (int i = 0; i < size; ++i)
std::cout << elements[i] << " ";
}
```
4. 取值 (Value Access): 获取指定索引处的元素。如:
```cpp
int get(int index) const
{
if (index >= 0 && index < size) return elements[index];
throw OutOfBoundException(); // 如果索引越界,抛出异常
}
```
5. 求表长 (Length): 返回当前列表的元素个数。如:
```cpp
int length() const { return size; }
```
6. 插入 (Insertion): 在指定位置添加新元素。如:
```cpp
void insert(int index, int value)
{
if (index < 0 || index > size) throw InvalidIndexException();
if (size == capacity) resize(size * 2); // 当满时扩容
for (int i = size - 1; i >= index; --i)
elements[i + 1] = elements[i];
elements[index] = value;
++size;
}
```
7. 查找 (Search): 根据给定值定位元素的位置。如:
```cpp
int find(int value) const
{
for (int i = 0; i < size; ++i)
if (elements[i] == value) return i;
return -1; // 如果未找到,返回-1
}
```
8. 删除 (Deletion): 移除指定位置的元素。如:
```cpp
void remove(int index)
{
if (index < 0 || index >= size) throw InvalidIndexException();
for (int i = index; i < size - 1; ++i)
elements[i] = elements[i + 1];
--size;
if (size < capacity / 2 && capacity > 0) resize(capacity / 2); // 缩小空间以避免浪费
}
```
9. 退出 (Destructor): 自动释放内部数组内存。在析构函数中调用:
```cpp
~SequenceList()
{
delete[] elements;
}
```