(2011.10.19)3_a1.cpp -- 顺序栈结构的定义
来源:互联网 发布:淘宝上比较好的鞋店 编辑:程序博客网 时间:2024/05/15 15:44
源代码:
// 3_a1.cpp -- 顺序栈结构的定义/* * -> 程序要求: * 1. 完成对顺序栈结构的定义,以及对顺序栈的各种基本运算的实现(每种基本运算用一个函数来实现)。 * 2. 基本运算包括:初始化Init_sqstack运算、判栈空Empty_sqstack运算、入栈Push_sqstack运算、出栈Pop_sqstack运算、取栈顶元素Gettop_sqstack运算。 * 3. 并且在main函数中分别调用以上各种基本运算的函数来使用,以证明其功能已实现。 * 4. 此题的源程序保存为 3_a1.cpp *//* * -> 程序分析: * 1. 顺序栈比顺序表还要容易写,思想方面,差不多是顺序表的一个特例。 * 2. 顺序栈的主要数据成员有:决定大小的元素(最大值,使用值),存放的数据。 * 3. 顺序栈的函数成员正如题目所列出来的那几种,从栈的功能来想的话,就是 [入,出,取],其它的有判空,初始,销毁,复制等还有一些按程序需求的扩展要求。 */#include <iostream>using std::cout;using std::endl;template <typename elem>class sqstack{private:enum size{defaultmaxsize = 6};// 默认栈大小int maxsize;// 该栈顶的最大sizeint top;// 当前的栈顶设为top - 1elem * arr;// 整个栈表的指针public:// 初始化及销毁顺序栈表sqstack (signed ms = defaultmaxsize): maxsize(ms), arr(new elem[maxsize]), top(0){}~sqstack(){ delete [] arr; maxsize = 0; top = 0;}//基本功能的实现bool isempty(){return top == 0;}// 判断表是否为空bool isfull(){return top == maxsize;}// 判断表是否满int sqstacksize() {return top;}// 返回栈表的大小// [取,出,入]void push(const elem &);// 入void pop();// 出elem Gettophelp();// 取栈顶元素void Gettop();};template<typename elem>void sqstack<elem>::push(const elem & pelem)// 入栈{if (isfull() == true){cout << "\n放入元素失败,表满。\n";return;}arr[top++] = pelem;cout << "\n成功放入元素" << pelem << "\n";return;}template <typename elem>void sqstack<elem>::pop()// 出栈{if (isempty() == true){cout << "出栈失败,表空。";return;}--top;return;}template <typename elem>elem sqstack<elem>::Gettophelp()// 取栈顶元素{return arr[top - 1];}template <typename elem>void sqstack<elem>::Gettop(){if(isempty()){cout << "元素获取失败,栈空。";return;}else cout << "栈顶元素为" << Gettophelp();return;}int main(){cout << ".................................栈功能测试开始................................\n";sqstack<int> test;// 入cout << "\n-> 入栈测试:( 当前栈顶位置为" << test.sqstacksize() << " )\n";cout << "放入元素 1, 2, 3, 4, 5, 6.\n";for (int i = 1; i != 10; ++i){cout << "i = " << i << ": ";test.push(i);}// 取cout << "\n-> 取栈顶元素测试:\n"; test.Gettop();// 出cout << "\n\n-> 出栈测试:( 当前栈顶位置为" << test.sqstacksize() << " )\n";for (int i = 1; i != 10; ++i){cout << "第 " << i << "次出栈: ";test.pop();cout << endl;}system("pause");return 0;}
运行结果:
.................................栈功能测试开始................................-> 入栈测试:( 当前栈顶位置为0 )放入元素 1, 2, 3, 4, 5, 6.i = 1:成功放入元素1i = 2:成功放入元素2i = 3:成功放入元素3i = 4:成功放入元素4i = 5:成功放入元素5i = 6:成功放入元素6i = 7:放入元素失败,表满。i = 8:放入元素失败,表满。i = 9:放入元素失败,表满。-> 取栈顶元素测试:栈顶元素为6-> 出栈测试:( 当前栈顶位置为6 )第 1次出栈:第 2次出栈:第 3次出栈:第 4次出栈:第 5次出栈:第 6次出栈:第 7次出栈: 出栈失败,表空。第 8次出栈: 出栈失败,表空。第 9次出栈: 出栈失败,表空。请按任意键继续. . .
- (2011.10.19)3_a1.cpp -- 顺序栈结构的定义
- (2011.09.09 )2_a1.cpp -- 顺序表 -- 基本功能实现(仿书结构)
- (2011.11.11) 4_a1.cpp -- 下三角矩阵的压缩存储定义
- (2011.11.11) 5_a1.cpp -- 二叉树结点定义.
- (2011.10.30)3_a3.cpp —— 循环队列结构的定义
- (2011.10.31)3_a4.cpp —— 对链队列结构的定义
- bo2-1.cpp 顺序表示的线性表(存储结构由c2-1.h定义)的基本操作(12个)
- (2011.11.28) 04_字符串的顺序结构存储.cpp
- 数据结构:顺序结构和链式结构的数据类型定义
- 队列的顺序结构和链式结构定义
- (2011.10.30)3_a2.cpp —— 链式栈的定义
- (2011.11.26)7_a1.cpp -- 插入排序练习
- 栈的顺序结构
- 栈的顺序结构
- 动态顺序栈的定义
- 3.1.2顺序栈(存储结构由c3-1.h定义)的基本操作
- 线性表的顺序储存结构定义(动态)实现
- 顺序栈:栈的顺序存储结构
- Android是否需要内置游戏平台?
- 创建组件失败的解决方案
- 根据NSArray里边的Object的某个属性进行排序
- 强大的Qtstylesheet
- Hadoop:File xxx could only be replicated to 0 nodes, instead of 1
- (2011.10.19)3_a1.cpp -- 顺序栈结构的定义
- Apache Avro 与 Thrift 比较
- 根据内容自动调整高度的cell
- 树状数组 二维空间
- 2010全球最值得模仿的230个网站
- servlet 总结
- VIM中获取命令的打印结果
- Unity3D 游戏引擎之构建3D游戏世界的基本地形(四)
- Profile购物车代码片段