《数据结构》实验课程旨在通过实践操作加深学生对基本数据结构和算法的理解与应用,培养编程能力和问题解决技巧。
顺序存储的线性表 时数:2 性质 验证内容:
1. 设一个递增有序的线性表存放在向量A[arrsize]中的前elenum个分量中,设计算法将值为x的新元素插入到适当位置上,保持原有的排序状态。
2. 利用单辅助结点,在仅使用向量作为存储结构的情况下,编写一个实现线性表循环右移k位的算法。
3. 同样利用单个辅助节点和向量数据结构,设计一种将线性表逆置的方法。要求理解线性表逻辑结构的特点,并熟练掌握顺序存储方式下的基本操作方法。
对于单链式列表的操作 时数:2 性质 验证内容:
1. 假设一个带头结点的动态单链表中的元素是按递增排序的,编写插入值为x的新节点到该有序链表中而不破坏其顺序性的算法。
2. 设计一种方法逆置一个带有头结点的动态链式列表L。要求利用原有的存储空间,并在最小的时间复杂度内完成操作。
3. 假设存在两个按照元素递增排序的单链表A和B,编写将它们合并成一个新的按降序排列的新链表C的算法,同时使用原表的空间来存放结果。
循环链式列表与双链式列表 时数:2 性质 验证内容:
1. 在一个长度大于一且无头结点指针和虚拟节点的单循环链中,给定指向某结点的s指针,编写删除*s直接前驱的操作算法。
2. 设计一种方法来将由单链表表示的数据元素分成三类(如:字母、数字和其他字符),并利用这些原始结点空间构造三个独立且循环链接的新列表。
3. 对于一个双链式列表,在每次执行LOCATE(L,x)操作时,更新相应节点的freq域值,并保证整个链表中的所有结点按其访问频率递减顺序排列。设计满足上述要求的算法。
栈与队列 时数:2 性质 验证内容:
1. 设计一个判断单链表中字符序列是否中心对称关系存在的算法。
2. 编写一种利用堆栈来验证算术表达式中的圆括号配对情况的方法。提示:扫描整个字符串,遇到左括号则将其压入堆栈;碰见右括号时弹出一个对应的左括号。
3. 以带有头结点的循环链表作为队列实现的数据结构,并只设有一个指向尾部位置的指针,在此基础之上编写置空、插入与删除操作等算法。
串运算实现 时数:2 性质 验证内容:
1. 设计一种从单链表示法定义的字符串X中找到第一个不在Y中的字符的方法,其中Y也是用结点大小为一的单链表来存储。
2. 编写一个在顺序串上执行strcmp(S,T)比较运算的具体算法。
3. 对于两个通过节点大小为1的单链表示法定义的字符串S和T,设计一种将首次匹配子串进行逆置操作的方法。要求熟练掌握基于不同数据结构实现的各种基本字符序列处理方法。
树的应用 时数:2 性质 验证内容:
1. 使用二叉链表作为存储形式,编写计算任意一棵给定的二叉树的高度值的算法。
2. 对于一个结点数量为n的完全二叉树,设计一种非递归方式实现其前序遍历的方法。
3. 以二叉链表的形式表示数据结构,并使用相同的机制来完成三类不同的顺序(即先根、中根和后根)遍历操作。要求熟悉不同类型的存储方案及其适用范围;掌握构建相关树的技巧,熟练运用递归与非递归技术实现各类访问模式下的遍历过程。
以上内容涉及到了数据结构中的多种关键概念和技术应用方式,在学习过程中需要深入理解每种方法背后的原理和应用场景。