用c++开发环境,使用顺序表的常用操作,具体定义在SeqList.h文件中,定义顺序表中数据成员,函数成员,元素定位,插入元素,构造空顺序表,清空顺序表
时间: 2024-09-14 18:01:54 浏览: 46
数据结构C++ 线性表——顺序表和单链表基本操作(含代码和注释).docx
5星 · 资源好评率100%
在C++中,为了创建一个简单的顺序表数据结构,我们可以定义一个名为`SeqList`的模板类,它包含数据成员如`Node`(指向下一个节点的指针)和`size`(记录当前元素的数量),以及一系列基本操作,包括元素定位、插入元素、构造空列表和清空列表。这里是一个简化的示例:
```cpp
// SeqList.h
#ifndef SEQLIST_H
#define SEQLIST_H
template <typename T>
class SeqList {
public:
// 数据成员
struct Node {
T data;
Node* next;
};
Node* head; // 链表头指针
size_t size;
// 构造函数和析构函数
SeqList(); // 构造空列表
~SeqList(); // 自动删除所有元素
// 元素定位(获取元素位置)
size_t find(const T& value) const;
// 插入元素
void insert(size_t index, const T& value);
// 清空顺序表
void clear();
private:
// 禁止直接复制和赋值
SeqList(const SeqList&) = delete;
SeqList& operator=(const SeqList&) = delete;
};
#endif // SEQLIST_H
```
以下是部分函数的实现:
```cpp
// SeqList.cpp
#include "SeqList.h"
template <typename T>
SeqList<T>::SeqList() : head(nullptr), size(0) {}
template <typename T>
~SeqList<T>() {
while (head) {
Node* temp = head;
head = head->next;
delete temp;
}
}
template <typename T>
size_t SeqList<T>::find(const T& value) const {
size_t pos = 0;
Node* current = head;
while (current && current->data != value) {
++pos;
current = current->next;
}
return (current == nullptr) ? size : pos;
}
template <typename T>
void SeqList<T>::insert(size_t index, const T& value) {
if (index > size)
throw std::out_of_range("Index out of range");
Node* newNode = new Node{value, nullptr};
if (index == 0) {
newNode->next = head;
head = newNode;
} else {
Node* prev = head;
for (size_t i = 0; i < index - 1; ++i) {
prev = prev->next;
}
newNode->next = prev->next;
prev->next = newNode;
}
size++;
}
template <typename T>
void SeqList<T>::clear() {
head = nullptr;
size = 0;
}
```
阅读全文