c++ 编程实现线性表两种存储结构中的基本操作的实现(线性表的创建、插入、删除和查找),并设计一个主菜单完成各个功能的调用。
时间: 2024-11-05 18:24:33 浏览: 11
在C++中,我们可以使用数组和链表这两种数据结构来实现线性表。以下是这两种存储结构的基本操作:
**1. 数组表示的线性表实现**
```cpp
// 定义元素类型
using ElementType = int;
// 创建数组线性表
class ArrayList {
private:
ElementType* data; // 存储数据
size_t capacity; // 表容量
size_t size; // 实际元素数量
public:
ArrayList(size_t initialCapacity = 5) : capacity(initialCapacity), size(0) {
data = new ElementType[capacity];
}
~ArrayList() { delete[] data; }
// 插入元素
void insert(int index, const ElementType& value) {
if (index > size) {
grow(capacity * 2);
}
for (size_t i = size; i > index; --i) {
data[i] = data[i - 1];
}
data[index] = value;
size++;
}
// 删除元素
void remove(int index) {
if (index < size && index >= 0) {
for (size_t i = index; i < size - 1; ++i) {
data[i] = data[i + 1];
}
size--;
}
}
// 查找元素
bool find(const ElementType& value) const {
for (size_t i = 0; i < size; ++i) {
if (data[i] == value) {
return true;
}
}
return false;
}
// 主菜单入口
void mainMenu() {
while (true) {
printMenu();
int choice;
std::cout << "Enter your choice: ";
std::cin >> choice;
switch (choice) {
case 1: insert(std::cin); break;
case 2: remove(std::cin); break;
case 3: if (find(std::cin)) std::cout << "Element found.\n"; else std::cout << "Element not found.\n"; break;
// 添加更多选项...
default: std::cout << "Invalid choice.\n";
}
}
}
};
```
**2. 链表表示的线性表实现**
```cpp
// 定义节点类型
template<typename T>
struct Node {
T value;
Node<T>* next;
};
template<typename T>
class LinkedList {
private:
Node<T>* head;
Node<T> dummy;
public:
LinkedList() : head(nullptr) {}
// ...其他插入、删除、查找等方法...
// 主菜单入口
void mainMenu() {
// ...类似上面的主菜单实现...
}
};
```
阅读全文