运用c++语言请编程实现一个对顺序表进行基本操作的系统,主要包括表的创建、输入、查询、取值、插入、删除和输出等操作。
时间: 2024-10-23 20:20:32 浏览: 47
在C++中,我们可以使用结构体或类来表示顺序表,并提供相应的成员函数来支持基本操作。这里是一个简单的示例,定义了一个`List`类,包含了创建列表、添加元素、查找、获取和删除元素的功能:
```cpp
#include <iostream>
using namespace std;
// 定义一个顺序表节点
struct ListNode {
int data;
ListNode* next;
ListNode(int value) : data(value), next(nullptr) {}
};
// 顺序表类
class List {
private:
ListNode* head; // 链表头指针
public:
// 创建空列表
List() : head(nullptr) {}
// 插入元素到列表尾部
void insert(int value) {
ListNode* newNode = new ListNode(value);
if (!head) {
head = newNode;
} else {
ListNode* curr = head;
while (curr->next) {
curr = curr->next;
}
curr->next = newNode;
}
}
// 查找元素并返回其索引(从0开始)
int find(int value) const {
ListNode* curr = head;
int index = 0;
while (curr && curr->data != value) {
curr = curr->next;
index++;
}
return curr ? index : -1;
}
// 获取指定索引处的元素
int get(int index) const {
if (index < 0 || !head || index >= size()) {
throw out_of_range("Index out of range");
}
ListNode* curr = head;
for (int i = 0; i < index; i++) {
curr = curr->next;
}
return curr->data;
}
// 删除指定位置的元素
void removeAt(int index) {
if (index < 0 || !head || index >= size()) {
throw out_of_range("Index out of range");
}
if (index == 0) {
head = head->next;
} else {
ListNode* prev = head;
for (int i = 1; i < index; i++) {
prev = prev->next;
}
prev->next = prev->next->next;
}
}
// 输出整个列表
void print() const {
ListNode* curr = head;
while (curr) {
cout << curr->data << " ";
curr = curr->next;
}
cout << endl;
}
// 返回列表长度
int size() const {
int count = 0;
ListNode* temp = head;
while (temp) {
count++;
temp = temp->next;
}
return count;
}
};
// 示例
int main() {
List list;
list.insert(10);
list.insert(20);
list.print(); // 输出:10 20
int index = list.find(20); // 找到20的位置
if (index != -1) {
cout << "Found at position " << index << endl;
}
cout << "Value at index 0 is " << list.get(0) << endl;
list.removeAt(index);
list.print(); // 输出:10
return 0;
}
```
这个例子展示了如何实现一个基础的顺序表,但它并不包含错误处理和边界检查,实际项目中需要完善这些部分。你可以根据需求调整这个代码。
阅读全文