(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次出栈: 出栈失败,表空。请按任意键继续. . .


 

原创粉丝点击