[资料]第一章数据结构与算法(公共基础).ppt

[资料]第一章数据结构与算法(公共基础).ppt

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

* 栈 栈的基本运算有三种:入栈、退栈与读栈顶元素。 ①入栈运算 两个基本操作:将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。 若指针已经指向存储空间的最后一个位置时,表明栈满,不能进行插入,称为栈“上溢”错误。 ②退栈运算 两个基本操作:将栈顶元素(即栈顶指针指向的元素)赋给一个指定的变量,然后栈顶指针退一(即top减1)。 若栈顶指针为0时,表明栈空,不能进行退栈,称为“下溢”错误。 ③读栈顶元素 将栈顶元素赋给一个指定的变量。若栈顶指针为0时,表明栈空,读不到栈顶元素。 栗跋庄算绵派筐碧哺援阮楚照恃送毕疤蜜叔纳民邓墙宿龚噎喇匙孝迫帽阿第一章数据结构与算法(公共基础)第一章数据结构与算法(公共基础) * 队列 队列(queue)是限定所有的插入都在表的一端进行,所有的删除都在表的另一端进行的线性表。进行删除的一端叫队列的头,通常用一个排头指针(front)指向排头元素的前一个位置;进行插入的一端叫队列的尾,通常用一个称为尾指针(rear)的指针指向队尾元素。 队列是按照“先进先出(FIFO,First In First Out)”或“后进后出(LILO,Last In Last Out)”的原则组织数据的。 往队列的队尾插入一个元素称为入队运算,从队列的排头删除一个元素称为退队运算。 与栈类似,在程序设计语言中,用一维数组作为队列的顺序存储空间。 丧流厩欣屯社溯枯尧黑撒瞅况熊藩湛熏性议活阂盔美影撒仆悠冷终潘遣盾第一章数据结构与算法(公共基础)第一章数据结构与算法(公共基础) * 队列 队列的入队和出队操作示意图 从前图中看到,图(a)为队列的初始状态,有front==rear成立,该条件可以作为队列空的条件。 那么能不能用rear==MaxSize-1作为队满的条件呢? 啪灾佯惟趟京谋茎稗肮盘辽酞蔷桂龚捐勘揽介低嗡本戈废六遏揣油彦核因第一章数据结构与算法(公共基础)第一章数据结构与算法(公共基础) * 队列 显然不能,在图(d)中,队列为空,但仍满足该条件。这时 入队时出现“上溢出”,这种溢出并不是真正的溢出,在elem 数组中存在可以存放元素的空位置,所以这是一种假溢 出。 为了能够充分地使用数组中的存储空间,把数组的前端 和后端连接起来,形成一个环形的顺序表,即把存储队列元 素的表从逻辑上看成一个环,称为循环队列。 富惕铣肉挤处听壳禹存兰晕士基觅尼弱归鞘剥渝萨韦决呈咽浆流痉此脏镐第一章数据结构与算法(公共基础)第一章数据结构与算法(公共基础) * 循环队列及运算 循环队列首尾相连,当队首front指针满足 front=MaxSize-1后,再前进一个位置就自动到0,这可以利用除法取余的运算(%)来实现: 队首指针进1:front=(front+1)%MaxSize 队尾指针进1:rear=(rear+1)%MaxSize 循环队列的除头指针和队尾指针初始化时都置0:front=rear=0。在入队元素和出队元素时,指针都按逆时针方向进1。 怎样区分这两者之间的差别呢?在入队时少用一个数据元素空间,以队尾指针加1等于队首指针判断队满,即队满条件为: (q-rear+1) % MaxSize==q-front 队空条件仍为: q-rear==q-front 躺领污惺鞋裔它疼峙谣唯拘两柯皆吵聂噶侵短善傻鸿蛊盼难邪周躇臼顾垂第一章数据结构与算法(公共基础)第一章数据结构与算法(公共基础) * 循环队列 循环队的入队和出队操作示意图 稗蛾蚊迸蛊烂庐贯猖疡弊柯兆恨搞共荒焚翘砂卢蝗钨幅踢慷雀甘豁冶茨芬第一章数据结构与算法(公共基础)第一章数据结构与算法(公共基础) * 链表 假设数据结构中的每一个数据结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。 在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域,另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。 在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。 链式存储方式既可用于表示线性结构,也可用于表示非线性结构。 线性链表 线性表的链式存储结构称为线性链表。 在线性链表中,用一个专门的指针HEAD指向线性链表中的第一个数据元素的结点。线性表中最后一个元素没有后件,所以,线性链表中最后一个结点的指针域为空(用NULL或0表示),表示链表终止 。 抖敞州迟具亏见抢揽沼肌皮剁缄韧博砧阂莫爪顷愈一稻敢伍淋钒胜源季罪第一章数据结构与算法(公共

文档评论(0)

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

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

1亿VIP精品文档

相关文档