线性表的顺序表存储方式、链表存储方式实现、相关操作的编程用C++实现
时间: 2024-09-27 09:08:05 浏览: 62
线性表有两种常见存储方式:顺序表(Array-Based List)和链接表(Linked List)。
**顺序表**,也称为数组列表,它的每个元素都是连续存储在内存中的,通过索引来访问元素。C++实现如下:
```cpp
template <typename T>
class SequentialList {
private:
T* elements; // 存储元素的动态数组
size_t size;
size_t capacity;
public:
SequentialList(size_t initial_capacity = 0)
: elements(new T[initial_capacity]), size(0), capacity(initial_capacity) {}
void push_back(const T& value) {
if (size == capacity) {
resize(capacity * 2); // 当满时扩大容量
}
elements[size++] = value;
}
T& operator[](size_t index) {
if (index >= size) throw std::out_of_range("Index out of range");
return elements[index];
}
// 其他操作...
};
```
**链表**,则每个节点包含数据和指向下一个节点的指针,元素不是连续存储的。C++实现如下:
```cpp
template <typename T>
class LinkedListNode {
private:
T data;
LinkedListNode<T>* next;
public:
LinkedListNode(const T& data = T()) : data(data), next(nullptr) {}
};
template <typename T>
class LinkedList {
private:
LinkedListNode<T>* head;
size_t size;
public:
LinkedList() : head(nullptr), size(0) {}
void append(const T& value) {
LinkedListNode<T>* newNode = new LinkedListNode<T>(value);
if (!head) {
head = newNode;
} else {
LinkedListNode<T>** current = &head;
while (*current) {
current = &(*current)->next;
}
*current = newNode;
}
size++;
}
// 其他操作如查找、删除等...
};
```
阅读全文