c++编写一个线性表
时间: 2024-09-18 13:10:45 浏览: 35
在 C++ 中,你可以使用数组或者动态数据结构如 vector 或 list 来实现一个简单的线性表。这里以 vector 为例,它是一个内置容器,可以提供方便的插入、删除和访问元素的功能。
```cpp
#include <iostream>
#include <vector>
// 定义一个通用的数据节点类型
template <typename T>
class Node {
public:
T data;
Node* next; // 指向下一个节点的指针
};
// 线性表模板类
template <typename T>
class LinearList {
private:
Node<T>* head; // 链表头指针
public:
// 构造函数,初始化空链表
LinearList() : head(nullptr) {}
// 添加新元素到链表末尾
void addNode(T value) {
Node<T>* newNode = new Node<T>();
newNode->data = value;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
} else {
Node<T>* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 打印链表所有元素
void printList() {
Node<T>* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << "\n";
}
// 删除指定值的节点,如果不存在则不做操作
void removeNode(T value) {
if (head == nullptr) return;
if (head->data == value) {
Node<T>* temp = head;
head = head->next;
delete temp;
return;
}
Node<T>* current = head;
while (current->next != nullptr && current->next->data != value) {
current = current->next;
}
if (current->next != nullptr) {
Node<T>* temp = current->next;
current->next = current->next->next;
delete temp;
}
}
};
int main() {
LinearList<int> list;
list.addNode(1);
list.addNode(2);
list.addNode(3);
std::cout << "Original list:\n";
list.printList();
list.removeNode(2);
std::cout << "After removing 2:\n";
list.printList();
return 0;
}
```
阅读全文