1、顺序表的设计(sqlist.h):设计头文件sqlist.h,其内容如下:
①类型设计
②基本操作的设计(包括初始化、插入、删除、索引、遍历等)
2、设计文件c.h,提供比较和遍历时的操作函数。
3、测试:设计测试文件application.cpp文件,验证所设计的顺序表的正确性。其内容如下:
设计一个主函数。
4、利用上面设计的顺序表,实现下列应用
①删除元素在[x, y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1);
②将所有奇数移到所有偶数的前面,要求算法的时间复杂度为O(n),空间复杂度为O(1)。
③求LA=LA∪LB
设计函数实现上诉功能。并设计一个测试文件测试其正确定。
步骤:
①设计app.h文件,设计三个函数分别实现上诉①、②、③
第一步:首先根据题目要求,设计顺序表sqlist.h,代码如下
#include <stdlib.h>
#include "c.h"
#define LISTSIZE 20
#define INCREMENT 5
//设计顺序表
//1:顺序表数据类型定义
struct sqlist {
elemtype *elem;
int length;
int listsize;
};
//2:设计函数(对顺序表进行操作)
//2.1 初始化顺序表
void initList(sqlist &L) {
L.elem = new elemtype[LISTSIZE];
L.length = 0;
L.listsize = LISTSIZE;
}
//2.2 插入:在第i个位置插入数据元素e
void listInsert(sqlist &L, int i, elemtype e) {
if (i <= 0 || i > L.length + 1) {
cout << "position error!" << endl;
exit(0);
}
if (L.length >= L.listsize) {
elemtype *newbase;
newbase = (elemtype *) realloc(L.elem,
sizeof(elemtype) * (L.listsize + INCREMENT));
if (newbase != NULL) {
L.elem = newbase;
L.listsize += INCREMENT;
} else {
cout << "space overflow!" << endl;
exit(0);
}
}
for (int j = L.length; j >= i; j--