- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构及STL
数据结构
******************
day09
******************
第一课 堆栈与队列
1、数据结构的基本概念
(1)逻辑结构
1)集合结构(集) 数组 顺序树 复
链式 链表 链式树 合
2、数据结构的基本运算
(1)创建与销毁
(2)插入与删除
(3)获取与修改
(4)排序与查找
3、堆栈(vi static.cpp/lstatic.cpp)
(1)基本特征:后进先出
(2)基本操作:压入(push),弹出(pop)
(3)实现要点:初始化空间,栈顶指针,判空判满
【代码:vi stack.cpp】
#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 () {
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;
else
cout char (digit - 10 + A);
}
cout endl;
}
int main (void) {
try {
Stack stack;
for (int i = 0; ! stack.full (); ++i)
stack.push (i);
// stack.push (0);
while (! stack.empty ())
cout stack.pop () endl;
// stack.pop ();
}
catch (exception ex) {
cout ex.what () endl;
return -1;
}
cout 输入一个整数: flush;
int numb;
cin numb;
cout 您想看几进制: flush;
int base;
cin base;
cout 结果:;
printb (numb, base);
return 0;
}
【代码:vi lstack.cpp】
#include iostream
using namespace std;
// 基于链式表的堆栈
class Stack {
public:
// 构造过程中初始化为空堆栈
Stack (void) : m_top (NULL) {}
// 析构过程中销毁剩余的节点
~Stack (void) {
您可能关注的文档
- 数字图像处理_几何变换.ppt
- 数字图像处理复习PPT.pptx
- 数字图像处理实验报告 (图像编码).doc
- 数字图像处理_第六章_色彩模型与彩色处理.ppt
- 数字图像处理实验手册.doc
- 数字图像处理实验指导书(2014.10.13).doc
- 数字图像处理实验指导书(2015.11.04).doc
- 数字图像处理技术应用课程报告.doc
- 数字图像处理期末考题.doc
- 数字图像处理模拟题(双语课).doc
- 2023-2024学年湖南省湘西州高一下期末数学试卷附答案解析.docx
- 2023-2024学年四川省凉山州高一下期末数学试卷附答案解析.docx
- 2023-2024学年山东省日照市高一下期末数学试卷附答案解析.docx
- 2023-2024学年河北省张家口市高一下期末数学试卷附答案解析.docx
- 2023-2024学年山东省枣庄市高一下期末数学试卷附答案解析.docx
- 2023-2024学年四川省成都市高一下期末数学试卷附答案解析.docx
- 2023-2024学年四川省成都七中高一下期末数学试卷附答案解析.docx
- 2023-2024学年陕西省咸阳市高一下期末数学试卷附答案解析.docx
- 2023-2024学年山东省泰安市高一下期末数学试卷附答案解析.docx
- 黑龙江省哈尔滨市九中2024-2025年4月考试高二语文试卷.docx
文档评论(0)