c++中,如何实现实现顺序表和链式表;
时间: 2024-09-20 09:13:24 浏览: 42
C++实现基于静态数组的顺序表
在 C++ 中,可以分别通过数组实现顺序表(Array List),通过动态内存分配和指针实现链式表(Linked List)。
**1. 顺序表(Array List)实现:**
顺序表是一个线性数据结构,它将元素存储在连续的内存空间中。创建顺序表的基本步骤包括:
- 定义一个固定大小的数组作为容器。
- 使用数组下标访问和操作元素。
- 如果需要动态调整大小,通常会比较复杂,因为涉及到移动大量的元素。
示例代码:
```cpp
template <typename T>
class SequentialList {
private:
T* elements;
size_t size;
static const size_t DEFAULT_SIZE = 10;
public:
// 构造函数
SequentialList(size_t initial_capacity = DEFAULT_SIZE) : size(0), elements(new T[initial_capacity]) {}
// 添加元素
void push_back(const T& value) {
if (size == DEFAULT_SIZE)
resize(2 * DEFAULT_SIZE);
elements[size++] = value;
}
// 删除最后一个元素
void pop_back() {
if (size > 0)
--size;
}
// 访问元素
T& operator[](size_t index) {
return elements[index];
}
// 等其他相关操作...
private:
// 扩容和缩容等辅助函数...
};
```
**2. 链式表(Linked List)实现:**
链式表使用节点(Node)连接存储数据,每个节点包含数据和指向下一个节点的指针。链式表的主要操作有插入、删除和遍历。
- 创建链表节点:
```cpp
struct ListNode {
T data;
ListNode* next;
};
```
- 创建链表并添加元素:
```cpp
ListNode* createLinkedList(size_t count) {
ListNode* head = new ListNode{nullptr, nullptr};
ListNode* current = head;
for (size_t i = 0; i < count; ++i) {
current->next = new ListNode{values[i], nullptr};
current = current->next;
}
return head;
}
```
- 删除节点或查找等操作...
阅读全文