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

数据结构个人笔记总结.doc

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构个人笔记总结

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 (digit 1

文档评论(0)

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

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

1亿VIP精品文档

相关文档