顺序表的插入和删除完整代码
时间: 2024-10-11 20:09:38 浏览: 6
顺序表是一种线性的数据结构,其中元素按照一定的顺序存储在内存中。以下是使用C++语言实现顺序表的插入和删除操作的简单示例:
```cpp
#include <iostream>
// 定义顺序表节点
struct Node {
int data;
Node* next; // 指向下一个节点的指针
};
// 顺序列表类
class SequentialList {
private:
Node* head; // 链表头指针
int size; // 列表长度
public:
// 构造函数,初始化空列表
SequentialList() : head(nullptr), size(0) {}
// 插入操作:在指定位置插入新元素
void insert(int value, int position) {
if (position <= 0 || position > size + 1) {
std::cout << "Invalid position." << std::endl;
return;
}
Node* newNode = new Node();
newNode->data = value;
if (position == 1) { // 插入在头部
newNode->next = head;
head = newNode;
} else {
Node* current = head;
for (int i = 1; i < position - 1; ++i) {
if (!current->next) break; // 如果到达了结尾,提前退出循环
current = current->next;
}
newNode->next = current->next;
current->next = newNode;
}
size++;
}
// 删除操作:删除指定位置的元素
void remove(int position) {
if (position < 1 || position > size) {
std::cout << "Invalid position." << std::endl;
return;
}
if (position == 1) { // 删除头部元素
Node* temp = head;
head = head->next;
delete temp;
} else {
Node* current = head;
for (int i = 1; i < position - 1 && current->next; ++i) {
current = current->next;
}
if (current->next) {
Node* toRemove = current->next;
current->next = current->next->next;
delete toRemove;
}
}
size--;
}
// 打印列表
void print() {
Node* temp = head;
while (temp) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << std::endl;
}
};
int main() {
SequentialList list;
list.insert(1, 1);
list.insert(2, 2);
list.insert(3, 3);
list.print(); // 输出: 1 2 3
list.remove(2);
list.print(); // 输出: 1 3
return 0;
}
```
这个示例展示了如何创建一个简单的顺序表并完成插入和删除操作。请注意,这只是一个基本版本,实际应用中可能需要考虑更多细节,如异常处理、边界条件检查等。