用c++代码写一个实现顺序表的初始化、创建、删除
时间: 2024-10-10 13:05:56 浏览: 14
在 C++ 中,我们可以使用数组来实现简单的顺序表(也叫线性表)。这里是一个基础的例子,包括初始化、创建和删除元素:
```cpp
#include <iostream>
// 定义顺序表节点
struct ListNode {
int data; // 节点存储的数据
ListNode* next; // 指向下一个节点的指针
};
// 初始化空列表
ListNode* createEmptyList() {
return nullptr;
}
// 创建顺序表
ListNode* createSequenceList(int size, int values[]) {
ListNode* head = createEmptyList();
if (head) {
for (int i = 0; i < size; ++i) {
ListNode* newNode = new ListNode(values[i]);
newNode->next = head;
head = newNode;
}
}
return head;
}
// 删除指定位置的元素(假设从0开始计数)
void deleteElement(ListNode*& head, int position) {
if (!head || position < 0) {
std::cout << "Invalid operation: List is empty or position out of bounds." << std::endl;
return;
}
ListNode* temp = head;
for (int i = 0; i < position; ++i) {
temp = temp->next;
}
if (temp && temp->next) { // 避免除最后一个元素外的情况
ListNode* toDelete = temp->next;
temp->next = toDelete->next;
delete toDelete; // 释放内存
} else {
std::cout << "Cannot delete element at that position. List is too short." << std::endl;
}
}
// 打印顺序表
void printList(ListNode* head) {
ListNode* current = head;
while (current) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << std::endl;
}
int main() {
int values[] = {1, 2, 3, 4, 5};
int listSize = sizeof(values) / sizeof(values[0]);
ListNode* myList = createSequenceList(listSize, values);
if (myList) {
std::cout << "Initial sequence list: ";
printList(myList);
// 示例删除操作
deleteElement(myList, 2); // 删除索引为2的元素(值为3)
std::cout << "After deleting element at position 2: ";
printList(myList);
}
return 0;
}
```
在这个例子中,我们首先创建了一个空的链表,然后通过一个数组 `values` 和其大小创建了序列列表,并可以对列表进行插入和删除操作。注意这个代码示例是基础的,实际应用中可能需要处理更多的边界条件和异常情况。