青 岛 理 工 大 学
数据结构课程实验报告
课程名称 姓名 实验名称 实 验 目 的 及 要 求 实 验 环 境 实 验 内 容 数据结构 Abc 班级 学号 Abcxxx 实验日期 2014xxxxx 实验成绩 顺序表和链表的实现和应用 (1)掌握顺序表的顺序存储方法和基本操作; (2)掌握链表表的链式存储方法和基本操作; (3)了解顺序表和链表的优缺点和适用场合; (3)能够运用顺序表或链表解决问题。 硬件平台:普通的PC机 软件平台:Windows 2003操作系统 编程环境:VisualC++ 1. 采用递增有序的顺序表表示集合,求解两个集合的交集、并集和差集 (1)定义顺序表的存储结构; (2)实现存储递增有序集合的顺序表的建立、求交集、并集和差集等运算; (3)要求算法的时间性能在线性时间复杂度内; (4)和采用无序顺序表所表示的集合的有关运算的时间性能进行比较。 2. 采用递增有序的链表表示集合,求解两个集合的交集、并集和差集 (1)定义链表的存储结构; (2)实现存储递增有序集合的链表的建立、求交集、并集和差集等运算; (3)要求算法的时间性能在线性时间复杂度内; (4)和采用无序链表所表示的集合的有关运算的时间性能进行比较。 3.比较顺序表和链表的优缺点和适用场合
算 法 描 述 及 实 验 步 骤 调 试 过 程 及 实 验 结 果 template
typedef int Status; const int LIST_INIT_SIZE = 100; const int LISTINCREMENT = 10; template
T*q = &elem[length - 1]; for (q; q >= p; q--) { *(q + 1) = *q; } *p = e; length++; return OK; } Status ListAdd(T e) { this->elem[this->length] = e; this->length++; return OK; } Status ListDelete(int i, T &e) { if (i > length || i < 1) return ERROR; T*p = &elem[i - 1]; e = *p; T*q = &elem[this->length - 1]; for (++p; p <= q; p++) { *(p - 1) = *p; } length--; return OK; } Status ListShow() { for (int i = 0; i < length; i++) { cout << elem[i] << endl; } return OK; } }; template
} SQList