编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型ElemType为char),并在此基础上设计一个主程序,完成相应的功能
时间: 2024-09-22 12:05:21 浏览: 81
顺序表的基本操作及其测试程序
为了编写一个名为 `sqlist.cpp` 的程序,我们将实现一个简单的顺序表(Sequential List),其中元素类型为 `char`。我们将定义结构体来表示顺序表,以及包含插入、删除、搜索等基本操作的成员函数。这里我们使用 C++ 风格,首先创建一个顺序表的基本框架:
```cpp
// 定义顺序表节点结构体
struct Node {
char data;
Node* next;
};
// 顺序表类定义
class SequentialList {
private:
Node* head; // 表头指针
public:
// 构造函数
SequentialList() : head(nullptr) {}
// 插入元素到列表尾部
void insert(char value);
// 删除指定值的第一个实例
bool remove(char value);
// 搜索元素是否存在
bool search(char value);
// 打印整个列表
void print();
};
```
接下来,实现各个方法:
```cpp
void SequentialList::insert(char value) {
Node* newNode = new Node;
newNode->data = value;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
} else {
Node* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
}
bool SequentialList::remove(char value) {
if (head == nullptr) return false;
if (head->data == value) {
Node* temp = head;
head = head->next;
delete temp;
return true;
}
Node* current = head;
while (current->next != nullptr && current->next->data != value) {
current = current->next;
}
if (current->next == nullptr) return false;
Node* temp = current->next;
current->next = current->next->next;
delete temp;
return true;
}
bool SequentialList::search(char value) {
Node* current = head;
while (current != nullptr) {
if (current->data == value) return true;
current = current->next;
}
return false;
}
void SequentialList::print() {
Node* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " -> ";
temp = temp->next;
}
std::cout << "nullptr" << std::endl;
}
```
最后,在主程序中,你可以创建一个 `SequentialList` 对象,然后根据需求调用这些方法:
```cpp
int main() {
SequentialList list;
// 使用 insert 方法添加元素
list.insert('A');
list.insert('B');
list.insert('C');
// 使用 remove 方法删除特定元素
if (list.remove('B')) {
std::cout << "Element 'B' removed successfully." << std::endl;
} else {
std::cout << "Element 'B' not found in the list." << std::endl;
}
// 搜索元素
if (list.search('C')) {
std::cout << "'C' is present in the list." << std::endl;
} else {
std::cout << "'C' is not present in the list." << std::endl;
}
// 打印列表
list.print();
return 0;
}
```
阅读全文