- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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 10)
cout digit;
els
您可能关注的文档
最近下载
- 菲律宾结构设计规范NSCP chapter 1.pdf VIP
- 課程设计---四工位机床.doc VIP
- YAESU 八重洲 FT-8900R 四频段FM车载台 说明书.pdf VIP
- 2017年四川省成都市中考数学试卷及答案解析.pdf VIP
- HG_T 4196-2011 化学试剂 十水合碳酸钠(碳酸钠).docx
- 2024-2025学年小学科学四年级上册湘科版(2024)教学设计合集.docx
- 九年级美术上册第1课齐白石徐悲鸿备课岭南版.ppt VIP
- (高清版)DB32∕T 1702-2010 电力用户变电所运行规程 .pdf VIP
- 服装造型点线面.pptx VIP
- 十一自然资源配置.pptx VIP
文档评论(0)