- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构个人笔记总结
Good luck
Believe yourself
Just go
数据结构部分
一、数据结构的基本概念
1.逻辑结构
1)集合结构(集):结构中的元素除了同属一个集之外,没有任何联系。
2)线性结构(表):结构中的元素具有一对一的前后关系。
3)树型结构(树):结构中的元素具有一对多的父子关系。
4)网状结构(图):结构中的元素具有多对多的交叉映射关系。
2.物理结构
1)顺序结构(数组):结构中的元素存放在一段连续的地址空间中。随机访问方便,空间利用率低,插入删除不便。
2)链式结构(链式):结构中的元素存放在彼此独立的地址空间中,每个独立的地址空间被称为节点,节点除了保存数据以外,还保存另外一个或几个相关节点的地址。空间利用率高,插入删除方便,随机访问不便。
3.逻辑结构和物理结构的关系
表 树 图
顺序 数组 顺序树 复
链式 链表 链式树 合
二、数据结构的基本运算
1.创建与销毁
2.插入与删除
3.获取与修改
4.排序与查找
三、堆栈
1.基本特征:后进先出
2.基本操作:压入(push),弹出(pop)
3.实现要点:初始化空间,栈顶指针,判空判满。
1234
1*9^3+2*9^2+3*9^1+4*9^0 - 4
123 - 3
12 - 2
1 - 1
例子1:基于顺序表的堆栈
#include iostream
using namespace std;
// 基于顺序表的堆栈
class Stack {
public:
// 构造过程中分配内存
Stack (size_t size = 10) :
m_array (new int[size]), m_size (size),
m_top (0) {}
// 析构过程中释放内存
~Stack (void) {
if (m_array) {
delete[] m_array;
m_array = 0;
}
}
// 压入 要判断是否满了
void push (int data) {
if (full ()) //如果返回为真,则满了
throw OverFlow (); //抛出异常
m_array[m_top++] = data; //压入元素,用后++,因为先在栈顶的位置压入元素,在将栈顶上移,等待新的元素压入
}
// 弹出 要判断是否为空
int pop (void) { //
if (empty ()) //如果返回为真,则为空
throw UnderFlow (); //抛出异常
return m_array[--m_top]; //用前--,因为要先将栈顶下降一,在弹出
}
// 判满
bool full (void) const {
return m_top = m_size; //如果满了,返回真
}
// 判空
bool empty (void) const {
return ! m_top; //如果位空,返回为真
}
private:
// 上溢异常
class OverFlow : public exception { //内部类,继承标准异常
const char* what (void) const throw () { //给what提供一个覆盖
return 堆栈上溢!;
}
};
// 下溢异常
class UnderFlow : public exception { //内部类,继承标准异常
const char* what (void) const throw () {
return 堆栈下溢!;
}
};
int* m_array; // 数组
size_t m_size; // 容量
size_t m_top; // 栈顶
};
void printb (unsigned int numb, int base) {
//堆栈的产生与使用的顺序是相反的。
Stack stack (256);
do {
stack.push (numb % base); //进行求余得到没以为的数字,不过顺序相反
} while (numb /= base); //
while (! stack.empty ()) { //将栈中的内容拿出。因为堆栈是后进先出,所以顺序再次颠倒,刚好恢复顺序
int digit = stack.pop ();
if (digit 1
您可能关注的文档
- 数字图像处理实验报告 (图像编码).doc
- 数字图像处理_第六章_色彩模型与彩色处理.ppt
- 数字图像处理实验手册.doc
- 数字图像处理实验指导书(2014.10.13).doc
- 数字图像处理实验指导书(2015.11.04).doc
- 数字图像处理技术应用课程报告.doc
- 数字图像处理期末考题.doc
- 数字图像处理模拟题(双语课).doc
- 数字图像处理模拟试卷及答案.doc
- 数字图像处理教程(matlab版).ppt
- 2025至2031年中国自行式直臂型高空作业车行业投资前景及策略咨询研究报告.docx
- 2025-2030中国薰蒸治疗保健仪行业市场深度发展趋势与前景展望战略研究报告.docx
- 电工特种作业操作证《低电压电工作业题考试题》模拟卷_0.doc
- 2025至2031年中国自卸车顶盖密闭系统行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国腐植酸生态有机肥行业投资前景及策略咨询研究报告.docx
- 电工特种作业操作证《低电压电工作业题考试题》模拟卷_1.doc
- 2025至2031年中国膈肌功能电脑测定仪行业投资前景及策略咨询研究报告.docx
- 2025-2030中国薰衣草保湿套装行业发展趋势及发展前景研究报告.docx
- 2025至2031年中国芦荟祛死皮精华素行业投资前景及策略咨询研究报告.docx
- 2023北京交大附中高二(上)期中生物试卷含答案.pdf
文档评论(0)