编写一个程序sqlist.cpp.实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型为char),并在此基础上设计一个程序exp2-1.cpp完成以下功能。
时间: 2024-10-08 07:17:57 浏览: 127
编写一个名为`sqlist.cpp`的程序,用于实现基于字符类型的顺序表(也称为数组列表)的基本操作,包括插入、删除、查找和遍历等。这里简要概述实现步骤:
```cpp
// sqlist.h - 顺序表头文件
#ifndef SQLIST_H
#define SQLIST_H
#include <iostream>
using namespace std;
class Sqlist {
public:
// 构造函数,初始化顺序表大小
Sqlist(int size);
// 插入元素到表尾
void insert(char item);
// 删除指定索引处的元素
void remove(int index);
// 查找指定元素,返回其在列表中的位置(找不到返回-1)
int search(char item);
// 遍历顺序表并打印所有元素
void display();
private:
// 存储数据的动态数组
char* elements;
// 当前元素个数
int count;
// 序列表的大小
int capacity;
};
#endif // SQLIST_H
```
接下来是`sqlist.cpp`的实现部分:
```cpp
// sqlist.cpp
#include "sqlist.h"
Sqlist::Sqlist(int size) {
capacity = size;
elements = new char[capacity];
count = 0;
}
void Sqlist::insert(char item) {
if (count == capacity) {
resize(capacity * 2); // 扩大容量
}
elements[count++] = item;
}
void Sqlist::remove(int index) {
if (index >= 0 && index < count) {
for (int i = index; i < count - 1; ++i) {
elements[i] = elements[i + 1];
}
count--;
if (count == capacity / 4) { // 裁剪空闲空间
resize(capacity / 2);
}
} else {
cout << "Index out of range!" << endl;
}
}
int Sqlist::search(char item) {
for (int i = 0; i < count; ++i) {
if (elements[i] == item) {
return i;
}
}
return -1;
}
void Sqlist::display() {
for (int i = 0; i < count; ++i) {
cout << elements[i] << " ";
}
cout << endl;
}
// 动态扩容函数
void Sqlist::resize(int new_capacity) {
char* new_elements = new char[new_capacity];
for (int i = 0; i < count; ++i) {
new_elements[i] = elements[i];
}
delete[] elements;
elements = new_elements;
capacity = new_capacity;
}
// exp2-1.cpp 实现示例
#include "sqlist.h"
int main() {
Sqlist list(5);
list.insert('A');
list.insert('B');
list.insert('C');
list.display(); // 输出 A B C
int index = list.search('B'); // 搜索 'B'
if (index != -1)
cout << "Found 'B' at index " << index << endl;
else
cout << "'B' not found" << endl;
list.remove(1); // 删除索引1的元素 'B'
list.display(); // 输出 A C
return 0;
}
```
在这个例子中,`exp2-1.cpp`可以进一步完善以完成所需功能。例如,你可以添加更多用户交互,如让用户输入操作指令或创建更大的顺序表,并处理错误情况。
阅读全文