C++实现数据结构:一纸开卷助你高分

需积分: 9 7 下载量 89 浏览量 更新于2024-09-11 1 收藏 569KB DOC 举报
"这份资料是关于数据结构的复习材料,主要使用C++语言,适合一纸开卷的考试。作者通过这份资料获得了93分,并建议考生提前熟悉资料中的知识点和布局,以便在考试中快速定位。资料涵盖了顺序表、链表、栈、队列、字符串等基本数据结构,以及相关的操作方法和特性。" 本文将详细阐述这些数据结构及其相关知识点。 1. **classList**: 这是一个抽象类,表示一种列表数据结构,提供了对元素的基本操作,如清空(clear)、判断是否为空(isEmpty)、追加元素(append)、插入元素(insert)、删除元素(delete)、获取值(getValue)和设置值(setValue)。此外,还有一个`getPos`方法用于获取指定值元素的位置。 2. **arrList**: 这是classList的派生类,实现了基于数组的列表,具备快速读取(O(1))但插入和删除较慢(O(n))的特点。成员变量包括存储元素的数组aList,最大容量maxSize,当前长度curLen,以及用于定位的position。 3. **Link** 和 **lnkList**: Link是链表节点的定义,包含数据域data和指向下一个节点的指针next。lnkList继承自classList,实现链表结构,插入和删除的时间复杂度为O(n),可以通过`setPos`方法设定位置。 4. **Stack**: 定义了栈的基本操作,如清空(clear)、压栈(push)、弹栈(pop)、查看栈顶元素(top)以及判断栈是否为空或已满。 5. **arrStack**: 基于数组实现的栈,继承自Stack,包含最大栈大小mSize,当前栈顶位置top,以及存储元素的数组st。 6. **Queue**: 定义了队列的操作,如清空(clear)、入队(enQueue)、出队(deQueue)、查看队首元素(getFront),以及判断队列是否为空或已满。 7. **lnkQueue**: 链表实现的队列,继承自Queue,队列大小由size表示,front和rear分别指向队首和队尾。 8. **arrQueue**: 数组实现的队列,同样继承自Queue,包含最大队列大小mSize,队首和队尾位置front和rear,以及存储元素的数组qu。 9. **String**: 字符串类提供了一系列操作,如子字符串提取(substr)、交换字符串(swap)、复制(copy)、赋值(Assign)、连接(+=、append)、查找(find)、替换(replace)、清除内容(clear)、获取大小(size)、长度(length)和最大大小(max_size)。 10. **二叉树相关概念**: - 满二叉树:每个节点要么是叶节点,要么恰好有两个非空子节点。 - 完全二叉树:除了最底层外,所有层的节点都完全填满,且最底层的节点尽可能地集中在左边。 - 扩充二叉树:对于度数为1的节点,添加一个空叶节点;对于叶节点,添加两个空叶节点。其高度等于深度加1,非空满二叉树的叶节点数等于分支节点数加1。 以上就是数据结构中涉及的主要知识点,包括基本数据结构(顺序表、链表、栈、队列)的操作和特性,以及字符串处理和二叉树的基础概念。掌握这些知识对于理解和应用数据结构至关重要。在准备一纸开卷考试时,考生应该熟练掌握这些内容,并能迅速找到相关知识点的位置。