网站大量收购独家精品文档,联系QQ:2885784924

数据结构及STL.doc

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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) {

文档评论(0)

骨干 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档