【实验报告概述】
本实验报告主要探讨了数据结构中的顺序表和链表的应用,由计算机与信息工程学院的计算机类专业学生宋然完成,指导教师为李俊玲。实验目标是实现顺序表的各种基本运算算法,包括初始化、建表、删表以及元素的增删查改。实验内容涉及到了C++编程语言,通过头文件`sqlist.h`和源文件`sqlist.cpp`实现了顺序表的相关操作。
【顺序表的实现】
顺序表是线性表的一种存储方式,它利用数组来存储元素,使得元素在内存中连续存放。在C++中,可以定义一个结构体`sqlist`,包含一个最大长度为50的字符数组`data`和一个表示当前元素个数的整型变量`length`。实验中,提供了以下函数来操作顺序表:
1. `creatList`: 用于创建顺序表,接受一个整数`n`和一个元素数组`arr`,将数组中的`n`个元素填充到顺序表中。
2. `InitList`: 初始化顺序表,分配内存空间。
3. `printList`: 打印顺序表中的所有数据元素。
4. `length`: 返回顺序表的长度。
5. `listEmpty`: 判断顺序表是否为空。
6. `locateElem`: 根据数据元素`e`在顺序表中查找其位置,返回是否找到的结果。
7. `getElem`: 根据元素的位次`i`获取元素,并将其值赋给参数`e`,返回查找成功与否的结果。
8. `listInsert`: 在指定位置`i`插入元素`e`,返回插入成功与否的结果。
9. `deleteElem`: 删除指定位置`i`的元素,并将被删除元素的值赋给参数`e`,返回删除成功与否的结果。
10. `destroyList`: 释放顺序表占用的内存。
【实验细节】
实验中,`creatList`函数通过遍历输入数组,将元素逐个添加到顺序表中。`InitList`函数使用`malloc`动态分配内存创建一个新的顺序表。`printList`函数通过循环遍历顺序表并打印每个元素。`length`函数直接返回`length`成员变量的值。`listEmpty`函数检查`length`是否为0来判断是否为空。`locateElem`使用循环查找元素,找到则返回其位置,未找到则返回0。`getElem`通过下标访问元素,验证下标有效性。`listInsert`和`deleteElem`在检查下标合法性后进行插入或删除操作,注意在插入时可能需要扩展顺序表的容量。`destroyList`使用`free`释放内存。
【实验总结】
通过这个实验,学生能够深入理解顺序表的数据结构及其基本操作的实现,包括插入、删除、查找等。此外,实验还涉及到了动态内存管理,对C++中的指针和数组有了更直观的认识。实验代码的设计和实现有助于提高学生的编程能力,为后续学习更复杂的数据结构和算法打下基础。