欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C++和数据结构.ppt

    • 资源ID:1695466       资源大小:399.50KB        全文页数:29页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++和数据结构.ppt

    数据结构(三),常宝宝北京大学计算机科学与技术系chbbpku.edu.cn,内容提要,栈队列 栈和队列是两种特殊的线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表。 栈和队列广泛地应用在各种软件系统中,是程序设计中必须掌握的两种基本数据结构。,什么是栈?,若限定仅在线性表的一端进行插入和删除操作,这样的线性表称为栈。能够进行插入和删除操作的一端称为栈顶。另一端则相应称为栈底。位于栈顶的元素称为栈顶元素,位于栈底的元素称为栈底元素。不含任何元素的栈称为空栈。栈的特点是后进先出。(Last In First Out: LIFO)上溢和下溢,和栈有关的操作,和栈有关的操作:构造一个不含任何元素的空栈判断栈是否为空栈判断栈是否满返回栈中的元素个数清空栈向栈顶压入(添加)一个元素从栈顶弹出(删除)一个元素读取栈顶元素,栈作为抽象数据类型,template class Stack public: enum error_code success, overflow, underflow;protected: .public: /操作 Stack(); Stack(const Stack,栈操作,Stack:Stack();/ PRECONDITION:/ POSTCONDITION: 建立了一个空栈,error_code Stack:push(const stack_entry/ PRECONDITION: 栈未满/ POSTCONDITION: 元素item被加入到栈的顶部/ REMARKS: 若栈未满,元素item被加入到栈的顶部,若栈已满,返回overflow,error_code Stack:pop();/ PRECONDITION: 栈非空/ POSTCONDITION: 栈顶部的元素被删除/ REMARKS: 若栈非空,栈顶元素被删除,若栈是空栈,返回错误代码underflow, 在实际实现时,error_code 应写作 Stack:error_code,栈操作,bool Stack:empty() const;/ PRECONDITION: / POSTCONDITION: 栈的状态未发生变化/ REMARKS: 若栈是空栈,返回true,若栈不是空栈,返回false,error_code Stack:top(stack_entry/ PRECONDITION: 栈非空/ POSTCONDITION: 栈的状态未发生变化/ REMARKS: 若栈非空,栈顶元素被读入item中,若栈是空栈,返回错误/ 代码underflow,栈结构的使用,int main() Stack intStack;/创建一个元素类型是整数的空栈 int n,item; cout > n; for (int i=0; i> item; intStack.push(item); /将整数item压入栈中 cout << endl; while ( !intStack.empty() ) /判断栈是否空栈 intStack.top(item); /读取位于栈顶的整数 cout << item << “ “; intStack.pop();/将栈顶的整数弹出 cout << endl;,栈的实现 顺序存储,和线性表类似,栈也有两种存储结构:(1) 顺序存储 (2) 链式存储。顺序存储:用一组连续的存储单元依次存放自栈底到栈顶的数据元素。,栈的实现 顺序存储,template class Stack public: enum error_code success, overflow, underflow;protected: int count; stack_entry entrymax_entry;public: /操作 Stack(); Stack(const Stack,栈的实现 顺序存储,template Stack:Stack() count = 0;,template Stack:error_code Stack:pop() if ( count = 0 ) return underflow; count-; return success;,template Stack:error_code Stack:push(const stack_entry,栈的实现 顺序存储,x,template bool Stack:empty() const if ( count = 0 ) return true; return false;,template Stack:error_code Stack:top(stack_entry,栈的实现 链式存储,在栈的链式实现中,栈被组织成一个链表。栈顶指针在链式存储的栈中:(1) 压入元素(2) 弹出元素,栈的实现 链式存储,template class Stack public: enum error_code success, overflow, underflow;protected: struct node stack_entry entry; node *next; node():next(0) node(const stack_entry ,栈的实现 链式存储,template Stack:Stack() top_node = NULL;,template Stack:error_code Stack:pop() if (top_node = NULL) return underflow; node* oldtop = top_node; top_node = top_node->next; delete oldtop; return success;,template Stack:error_code Stack:push(const stack_entry,栈的实现 链式存储,x,template bool Stack:empty() const if ( top_node = NULL ) return true; return false;,template Stack:error_code Stack:top(stack_entry,什么是队列?,若限定线性表仅能在一端进行插入,另一端进行删除,这样的线性表称为队列。能够进行插入的一端称为队尾。能够进行删除的一端称为队头。,位于队尾的元素称为队尾元素,位于队头的元素称为队头元素。不含任何元素的队列称为空队列。队列的特点是先进先出。(First In First Out: FIFO),和队列有关的操作,和队列有关的操作:构造一个不含任何元素的空队列判断队列是否空队列判断队列是否满返回队列中的元素个数清空队列在队尾加入一个元素删除位于队头的元素读取队头元素,队列作为抽象数据类型,template class Queue public: enum error_code success, overflow, underflow;protected: .public: /操作 Queue(); Queue(const Queue,队列的使用,int main() Queue intQueue;/创建一个整型空队列 int x; for (int i = 0; i<10; i+ ) intQueue.append(i);/在队列尾部插入整数 while (!intQueue.empty() /判断队列是否空队列 intQueue.retrieve(x);/读取队列头部的元素 cout << x << “ ”; intQueue.serve();/删除队列头部的元素 cout << endl;,队列的实现 顺序存储,在队列的顺序实现中,用一组连续的存储单元存储队列中的元素。(1) 队头固定(2) 队头、队尾均不固定(3) 循环数组防止“假溢出”,队列的实现 顺序存储,template class Stack public: enum error_code success, overflow, underflow;protected: int count; stack_entry entrymax_entry;public: /操作 Stack(); Stack(const Stack,template class Queue public: enum error_code success, overflow, underflow;protected: int count; int front, rear; queue_entry entrymax_entry;public: /操作 Queue(); Queue(const Queue,队列的实现 顺序存储,template Queue:Queue() count=0; rear=max_entry-1; front=0;,template bool Queue:empty() const if ( count=0 ) return true; return false;,template Queue:error_code Queue:append(const queue_entry,队列的实现 顺序存储,template Queue:error_code Queue:retrieve(queue_entry,template Queue:error_code Queue:serve() if ( count = 0 ) return underflow; count-; front = (front+1)%max_entry; return success;,队列的实现 链式存储,在队列的链式实现中,队列被组织成一个链表。队头指针和队尾指针在链式存储的队列中:(1) 插入元素 (2) 删除出元素,队列的实现 链式存储,template class Queue public: enum error_code success, overflow, underflow;protected: struct node queue_entry entry; node *next; node():next(0) node(const queue_entry ,队列的实现 链式存储,template Queue:Queue():front(NULL),rear(NULL) ,template bool Queue:empty() const if ( front=NULL ) return true; return false;,template Queue:error_code Queue:append(const queue_entry,队列的实现 链式存储,template Queue:error_code Queue:retrieve(queue_entry,template Queue:error_code Queue:serve() if ( front = NULL ) return underflow; node* oldfront = front; front = front->next; if ( front=NULL ) rear = NULL; delete oldfront; return success;,上机作业,在机器上用C+分别实现顺序存储和链式存储的栈结构。在机器上用C+分别实现顺序存储和链式存储的队列结构。在实现链式存储的栈结构和队列结构时,必须提供析构函数、拷贝构造函数和赋值运算符重载函数,为什么?,

    注意事项

    本文(C++和数据结构.ppt)为本站会员(创****公)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开