数据结构个人记总结.docVIP

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、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 (

文档评论(0)

dmdt5055 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档