用c++实现一个对顺序表进行基本操作的系统,主要包括表的创建、输入、查询、取值、插入、删除和输出等操作。
时间: 2024-10-07 16:06:56 浏览: 24
在C++中,我们可以创建一个简单的线性表结构来实现这些功能,通常会用到指针和数组。这里是一个基础的顺序表实现示例:
```cpp
#include <iostream>
// 定义顺序表节点
struct ListNode {
int value;
ListNode* next;
};
// 创建一个新的顺序表
ListNode* createList() {
return nullptr; // 初始表为空
}
// 插入元素
void insert(ListNode** head, int value) {
ListNode* newNode = new ListNode{value, nullptr};
if (*head == nullptr) {
*head = newNode;
} else {
ListNode* current = *head;
while (current->next != nullptr) {
current = current->next;
}
current->next = newNode;
}
}
// 查询元素
bool search(ListNode* head, int value) {
ListNode* current = head;
while (current != nullptr) {
if (current->value == value) {
return true;
}
current = current->next;
}
return false;
}
// 取值并输出
void getValueAndPrint(ListNode* head) {
ListNode* current = head;
while (current != nullptr) {
std::cout << current->value << " ";
current = current->next;
}
std::cout << "\n";
}
// 删除指定值的元素
void remove(ListNode** head, int value) {
if (*head == nullptr) {
return;
}
if ((*head)->value == value) {
ListNode* temp = *head;
*head = (*head)->next;
delete temp;
return;
}
ListNode* prev = *head;
ListNode* current = *head->next;
while (current != nullptr && current->value != value) {
prev = current;
current = current->next;
}
if (current != nullptr) {
prev->next = current->next;
delete current;
}
}
// 输出整个列表
void displayList(ListNode* head) {
getValueAndPrint(head);
}
int main() {
// 示例操作
ListNode* listHead = createList();
insert(&listHead, 10);
insert(&listHead, 20);
insert(&listHead, 30);
displayList(listHead); // [10, 20, 30]
if (search(listHead, 20)) {
std::cout << "Found 20.\n";
} else {
std::cout << "Not found 20.\n";
}
remove(&listHead, 20);
displayList(listHead); // [10, 30]
return 0;
}
```
这个例子展示了如何使用C++创建一个简单的顺序表,并实现了创建、插入、查询、取值、插入和删除操作。请注意,这只是一个基础版本,实际应用中可能需要处理更复杂的情况,比如动态内存分配、错误检查等。
阅读全文