顺序表和链表的类型定义。
时间: 2025-01-03 19:25:31 浏览: 3
在C++中,顺序表(Sequential List)和链表(Linked List)是两种常见的数据结构。
**1. 顺序表**(也称为数组或动态数组),其元素是连续存储在内存中的。在C++中,我们可以使用标准库中的`std::vector`或自定义数组来表示顺序表。这里是一个简单的顺序列表类型定义示例:
```cpp
template <typename T> // 假设T是元素类型
class SequentialList {
private:
T* data; // 数据指针
std::size_t size; // 当前元素数量
public:
SequentialList() : data(new T[0]), size(0) {} // 默认构造函数
~SequentialList() { delete[] data; } // 析构函数释放内存
void push_back(T value) {
if (size == data capacity) resize(size * 2); // 当满时扩大容量
data[size++] = value;
}
// 其他成员函数如访问、遍历等
};
```
**2. 链表**(Linear List),每个节点包含一个数据元素和指向下一个节点的指针。在C++中,单链表通常使用`struct`或`class`定义节点,然后创建一个头结点(head)。以下是一个简单的单链表类型定义示例:
```cpp
template <typename T> // 同样假设T是元素类型
class Node {
public:
T value;
Node<T>* next;
};
class LinkedList {
private:
Node<T>* head; // 头结点指针
public:
LinkedList() : head(nullptr) {}
void addNode(T value) {
Node<T>* newNode = new Node<T>{value, nullptr}; // 创建新节点
if (!head) head = newNode; // 如果链表为空,设置头结点
else newNode->next = head; // 将新节点添加到链首
}
// 其他成员函数如删除节点、遍历等
};
```
对于双链表(每个节点有两个指针,分别指向前一个节点和后一个节点),你可以增加`Node`结构体的指针即可。
阅读全文