能否提供一个关于顺序表基本操作(如插入、删除和按值查找和位置查找)的示例C++代码实现?
时间: 2024-12-20 12:30:02 浏览: 3
当然可以。以下是C++中顺序表(通常用数组表示)的基本操作的简单实现:
```cpp
#include <iostream>
// 定义顺序表节点结构体
struct Node {
int data;
Node* next; // 指向下一个节点的指针
};
// 创建新节点
Node* createNode(int value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = nullptr;
return newNode;
}
// 插入节点到列表尾部
void insertAtEnd(Node** head, int value) {
Node* newNode = createNode(value);
if (*head == nullptr) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 删除指定值的节点(如果存在)
void deleteValue(Node** head, int value) {
if (*head == nullptr) {
return;
}
if ((*head)->data == value) {
Node* temp = *head;
*head = (*head)->next;
delete temp;
return;
}
Node* prev = *head;
Node* curr = *head->next;
while (curr != nullptr && curr->data != value) {
prev = curr;
curr = curr->next;
}
if (curr != nullptr) {
prev->next = curr->next;
delete curr;
}
}
// 查找值的位置(返回索引,找不到返回-1)
int searchByValue(Node* head, int value) {
Node* temp = head;
int index = 0;
while (temp != nullptr) {
if (temp->data == value) {
return index;
}
temp = temp->next;
index++;
}
return -1;
}
// 主函数测试
int main() {
Node* listHead = nullptr;
// 插入操作
insertAtEnd(&listHead, 5);
insertAtEnd(&listHead, 10);
insertAtEnd(&listHead, 15);
// 打印初始列表
printList(listHead); // 自己实现的一个打印列表函数
// 删除操作
deleteValue(&listHead, 10);
// 查找操作
int position = searchByValue(listHead, 15);
std::cout << "Position of 15: " << position << std::endl;
return 0;
}
```
阅读全文