数据结构重要性对于移动游戏应用很重要吗

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
《数据结构、算法与应用(C++语言描述)》习题参考答案doc.doc 32页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
《数据结构、算法与应用(C++语言描述)》习题参考答案doc.doc
你可能关注的文档:
··········
··········
1.数据数据元素数据结构数据类型的含义分别是什么?数据对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并由计算机程序处理的符号的总称。数据元素数据的基本单位在计算机程序中通常作为一个整体考虑。
数据结构:数据元素之间的关系+运算是以数据为成员的结构,是带结构的数据元素的集合,数据元素之间存在着一种或多种特定的关系。数据类型:取值范围基本运算2.什么是数据的逻辑结构?什么是数据的物理结构?数据的逻辑结构与物理结构的区别和联系是什么?逻辑结构数据的逻辑结构定义了数据中数据元素之间的相互逻辑关系。数据的逻辑结构包含下面两个方面的信息:
① 数据元素的信息;
② 各数据元素之间的关系。物理结构也叫储存结构是指逻辑结构的存储表示,即数据的逻辑结构在计算机存储空间中的存放形式包括结点数据和关系的表示。3.数据结构的主要操作包括哪些?对于各种数据结构而言,在基本操作是相似的,最常用的操作有:
创建:建立一个数据结构;
除:除一个数据结构;
插入:在数据结构中增加新的结点
删除:把指定的结点从数据结构中
访问:对数据结构中的结点进行访问
更新:改变指定结点的值或改变指定的某些结点之间的关系
查找:在数据结构中查找满足一定条件的结点
排序:对数据结构中各个结点按指定数据项的值,以升序或降序重新排列。
4.什么是抽象数据类型?如何定义抽象数据类型?5.什么是算法?算法的基本特征是什么?算法是在有限的步骤内解决数学问题的过程,是以一步接一步的方式来详细描述计算机如何将输入转化为所要求的输出的过程,即算法是对计算机上执行的计算过程的具体描述。一个有效的算法必须满足的五个重要特性:
① 有穷性:算法必须能在有限的时间内做完,即在任何情况下,算法必须能在执行有限个步骤之后终止,都不能陷入无穷循环中。
② 确定性:算法中的每一个步骤,必须经过明确的定义,并且能够被计算机所理解和执行,而不是抽象和模糊的概念,更不允许有二义性。
③ 输入:算法有0个或多个输入值,来描述算法开始前运算对象的初始情况,这是算法执行的起点或是依据。0个输入是指算法本身给出了运算对象的初始条件。
④ 输出:算法至少有1个或多个输出值,反映对运算对象的处理结果,没有输出的算法没有任何意义。
⑤ 可行性:算法中要做的运算都是基本运算,能够被精确地进行。即算法中执行的任何计算都可以被分解为基本的运算步,每个基本的运算步都可以在有限的时间内完成。6.什么是算法分析?算法分析主要考虑哪几方面的内容?①时间代价:执行算法所耗费的时间。一个好的算法首先应该比其他算法的运行时间代价要小。算法的时间代价的大小用算法的时间复杂度来度量。
②空间代价:执行算法所耗费的存储空间,主要是辅助空间。算法运行所需的空间消耗是衡量算法优劣的另一个重要因素。算法的空间代价的大小用算法的空间复杂度来度量。
7.分析下面算法的时间复杂度。
(1)(2)
(4)(5)O(log2n)
8.算法设计中的递归、穷举、递推和迭代等算法的基本思想是什么?9.算法设计中的分治策略、贪心策略、动态规划策略、回溯策略以及分支定界策略的基本思想是什么? 第二章 线性表
1.具有什么特征的数据结构被称为线性表?2.如何实现线性表的顺序存储结构?把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里就构成了线性表的顺序存储,采用顺序存储结构的线性表简称顺序表。线性表的顺序存储结构有如下特点:
线性表中所有元素所占的存储空间是连续的;
线性表的逻辑顺序与物理顺序一致;
数组中的每一个元素的位置可以用公式来确定。假设线性表中的第一个数据元素的存储地址(指第一个字节的地址,即首地址)为 LOC(e1),每一个数据元素占k个字节,则线性表中第i个元素ei在计算机存储空间中的存储地址为:
LOC(ei)=LOC(e1)+(i-1)k
3.如何实现线性表的4种链式存储结构?数据结构中的每一个数据元素对应于一个存储单元,这种存储单元称为存储结点,简称结点。每个结点分为两部分:一部分用于存放数据元素的值,称为数据域;另一部分是指针,用于指向与该结点在逻辑上相连的其他结点,称为指针域。对于线性表,指针域用于指向该结点的前一个或后一个结点(即前驱结点或后继结点)。通过结点的指针域将n个结点按其逻辑结构连接在一起的数据存储结构,称为链式存储结构。在线性链表中,用一个专门的指针指向线性表中第一个结点,每一个结点的指针都指向它的下一个逻辑结点,线性链表的最后一个结点的指针为空(用NULL或0表示),表示链表终止,这样的线性链表称为单向链表。图是单向链表示意图。
线性表的单向链式存储
将单向链表最后一个结点的指针指向头结点,这样整个链表就构成一个循环,这种链式存储结构称为单向循环链表,简称循环链表。头结点的指针域指向线性表的第一
正在加载中,请稍后...数据结构在游戏中的简单应用_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数据结构在游戏中的简单应用
&&数据结构在游戏中的用途有了大致的了解,数据结构其实在游戏中应用的方面很多,这里只是介绍了一小部分,希望大家一起多交流游戏编程的经验。
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩4页未读,
定制HR最喜欢的简历
你可能喜欢过“开放之河”:苹果摸石头、百度过桥[]_网易新闻
过“开放之河”:苹果摸石头、百度过桥[]
用微信扫码二维码
分享至好友和朋友圈
中新网6月5日电
苹果2014开发者大会(WWDC)终于落幕,关于这个话题的讨论才刚刚开始。基本上,舆论对此次大会的看法,类似于知乎上调侃锤子手机创始人罗永浩的一个段子——
WWDC2013:“不是历史选择了老罗,而是苹果主动把接力棒硬塞给了老罗”。“作为苹果公司的长期消费者我感到很难过”。“作为锤子科技的创始人,我觉得前面的路更容易走了”。
WWDC2014:“输入法这个牛X”。“homekit不错,令人向往的生活”。“Metal,难以置信,好”。“这段不明觉厉,呵呵”。
应该说,开发者大会对于苹果的分量,远逊于产品发布会,它并不发布新产品,而更着重于向开发者介绍苹果的策略和思考。但仅仅相隔一年的两届开发者大会,为何会导致公众对苹果的态度发生如此大的转变?
究竟有几种“开放”
结论只有两个字:开放。
来看看苹果在本次大会上发布的新动作:新的OS X yosemite操作系统,着重于与iOS的无缝整合;新的iOS8,着重于开放homekit、healthkit、spritekit、Touch ID、输入法等多个接口的API;新的开发语言Swift,着重于提高开发效率,“编程从未如此简单”。
一言以蔽之,苹果对“有限度地开放”这条道路,走得越来越有“道路自信”。一方面,通过开放越来越多的数据接口,苹果正试图把每个“kit”做成一座通往对应产业链的桥梁,不再全部亲力亲为。另一方面,苹果也更重视对开发者的扶持,发布更加简明、高效的开发语言,降低开发的门槛。
但同时,苹果也在无情地吞噬开发者的红利,将一个又一个中小开发者开拓的新功能整合进操作系统,在开放一部分功能的同时,又悄悄埋下封闭的伏笔,开发者却对此无可奈何。
所以,终极的问题在于,“开放”作为移动互联网时代的主流价值观,难道不是一个最简单的理念,一个贯穿于产业链所有环节的共识,而是像苹果这样慢慢寻求妥协,“摸着石头过河”吗?
“过桥”与“摸石头”
但当已经有桥存在的时候,还有必要继续“摸石头”吗?
在中国,这个全球移动互联网的主战场,安卓的大本营,苹果的滑铁卢,这个问题早已有了答案。中国领先的三家互联网公司BAT,在安卓平台上都已经有了自己的开放平台;不仅如此,第二梯队的小米、新浪、京东,乃至电信运营商、金融服务商,都秉承开放的理念,将自己的能力分享给产业链。
到目前为止,苹果所做的“开放”之举,在安卓平台实际上早已不是什么新鲜事。以最早涉足开放平台的百度为例,这家中国领先的搜索引擎服务商,早在2009年前即已涉足开放平台,目前有大数据平台,四个开放云平台(native及light app,开发者服务和LBS),智能硬件平台(包括做dulife平台和小度family平台,对应苹果的healthkit和homekit),都远比苹果更早。
此外,百度还提供3套不同水平的开发工具,及其他十几个共享平台给开发者,目前其开放云平台已经拥有70万开发者和2亿用户,移动分发市场份额达41.2%。以百度云开放平台为例,这个平台通过云端为开发者提供一应俱全的存储、推送、测试及统计能力,帮助降低开发移动APP的门槛。据了解,在百度的“开放云编程马拉松”比赛中,开发者被要求在限时30小时内使用百度开发工具开发出一款APP,参赛的多数开发者基本都可以在这个时间内开发出一款完整的创意APP,其中最小的开发者只有13岁。
开发者在完成项目后,还可以使用百度移动搜索和手机助手提供的从分发到使用的完整解决方案来进行推广和运营;最后还可以使用百度的移动游戏联运平台和移动应用广告平台进行变现。这形成一个良性的闭环:开发者除了可以利用百度分发平台来占领native app和light app两个巨大的市场,还可以通过加入搜索生态和云生态,同时布局现在和未来——前者为后者提供培育土壤,后者为前者提供更多粘性。
无论从哪个角度看,以百度为代表的安卓系开放平台,所做的都远比苹果为多,也远比苹果更开放。那么,现在的问题是,过桥与摸石头,未来究竟属于哪一个?
纯粹的“开放”
事实上,苹果的开放姿态,更像是对步步紧逼的安卓系的一种防御性还击。这一点从苹果的股价即可看出:尽管ios开发者欢呼雀跃,发布会后,苹果股价与之前相比,并无明显变化,甚至还小幅下挫了一点。
苹果原本面对的问题,在此次WWDC后并未得到根本解决。例如中长尾应用问题,苹果的应用数量过百万时,苹果感觉非常头疼,开始意识到传统的基于分类推荐目录的这样的App Store已经不适用,为此收购了一个公司chomp,但从实际情况来看,这并未解决苹果的苦恼。
而百度和google等公司正在推广的轻应用机制,也许可以在跨系统层面上一劳永逸地解决这个苦恼。从百度2013年Q4财报来看,上线轻应用后日活跃用户猛增了54.4%,同时带动native app日下载量增长了42.9%。其中如“58租房”等流量暴增一倍的案例。
另一个值得注意的问题是,多个系统平台并存的现状,在短期内并不会发生本质改变。决定开发者去留的,并不只是开发工具的简单与否。对于“全实时”的移动互联网,是否能使用同一种语言,同时编写服务器和客户端逻辑至关重要。让云和端互相之间,天生都能理解对方的数据结构,是比“做出产品”更重要的逻辑。
还是以百度为例,百度的数据显示,使用该公司花费两年研制的clouda框架,可以节开发者约40%以上的工作量,降低30%的开发成本。采用Clouda开发的产品,其冷启动速度是传统App的一倍以上,而开发效率则是普通Web App的2倍,是Native App的8倍-12倍。
现在已经有越来越多热门应用,选择在安卓平台首先更新,WWDC并不能改变这样的趋势。但苹果仍有机会。安卓系开放平台仍存在自己的问题,例如阿里、腾讯等开放平台,此前都发生过朝令夕改,政策混乱和不稳定的问题,还有谷歌在系统碎片化问题上的暧昧态度,还有更关键的——安卓的“开放”,也仍距真正的“开放”存在差距。
这给苹果留下了短暂的机会窗口。但苹果自己面临的问题,比安卓严重得多。要根本扭转在“开放”这个问题上的被动,苹果需要比这次WWDC做得更多。
(来源:中新网)
(原标题:过“开放之河”:苹果摸石头、百度过桥)
本文来源:海外网
责任编辑:王晓易_NE0011
用微信扫码二维码
分享至好友和朋友圈
加载更多新闻
热门产品:   
:        
:         
热门影院:
阅读下一篇
用微信扫描二维码
分享至好友和朋友圈论文发表、论文指导
周一至周五
9:00&22:00
浅谈数据结构在网络游戏程序开发中的应用
  摘 要:数据结构在系统软件与普通应用软件开发中应用领域应用广泛,在网络游戏程序开发中并未系统的应用。数据结构的在软件开发中的作用就是提高程序性能,若将之系统的应用于网络游戏开发,将会大大提高网络游戏的性能与运行速度,给玩家提供更好的游戏体验,提高游戏的可玩性。文中将从数据处理、动作响应及游戏规则两方面进行探讨,希望给出数据结构在网络游戏开发中一种新思路。 中国论文网 /1/view-5200153.htm  关键词:数据结构;数据处理;动作响应;规则实现   中图分类号:TP311 文献标识码:A 文章编号: (2013) 10-0060-02   数据结构现今被广泛应用于系统软件和普通应用软件开发。例如计算机操作系统中,利用高效的检索算法及索引技术,帮助计算机完成查找工作。数据结构对于网络游戏开发,其应用似乎并不广泛。数据结构的优势就在于提高程序的性能,如果数据结构与网络游戏很好的结合起来,可帮助提高游戏程序的运行速度,增强可玩性。而在网络游戏中需要处理的问题包括数据处理、动作响应及游戏规则的实现等等,下面就从上述两方面探讨数据结构在网络游戏开发中的合理运用。   一、数据处理   网络游戏包括各种大量的数据,它们被存放服务器端的数据库内。当某个玩家成功登录后,该玩家就会从服务器的数据库里获得大量有关其自身的数据。玩家获得的数据包括他选择的角色、当前玩到的级别、已经得到的道具、已经完成的任务及将要完成的任务等等。数据信息种类繁多,数量庞大。为了处理方便,客户端程序首先应该根据数据的种类选择其合理的数据结构进行临时存储,便于后续的数据查询、显示及上传。同时,数据会随着玩家不断闯关而增多,例如玩家的道具会随着级别的提升,种类和数量都会不断增多,因此需要采用合理的数据结构。   以玩家道具为例,如果用线性表的结构存储,就要为每一种道具建立一个线性表结构,会占用大量存储空间,因此,此类数据存储可以采用链式存储方式解决。例如剑的种类包括单手剑、双手剑、魔法剑及细剑等等,每种剑又会分为不懂级别。道具种类及道具之间可以采用树形结构链式存储,若将所有的剑均采用单链表存储,单链表长度过长,关系混乱,不便于查找。因此在采用链式存储同时,还应采用树形的逻辑结构,因此存储最终实现可采用树的链式存储结构中的孩子兄弟表示法。树的根结点为道具结点,此节点不包括任何数据,将已经获得的道具种类逐级分层,例如将剑、弓、魔法药水等为同一界别;下一级别各个种类详细划分,例如剑的下一级别就包括单手剑、双手剑、魔法剑及细剑等等;以此类推,最终的叶子结点就是某个具体道具。当玩家的某个角色需要获得自己的某种道具时,用遍历算法,先找到种类,再沿着种类找到所有的道具。当添加新道具时,首先判断道具是否已经在道具树中,如果已经在,那么就在树中该道具的数量加上新获得的数量;否则,应该判断新道具的种类是否已经在树中,如果在树中,则将道具放置所属种类的结点下面,如果此道具的种类未在树中存在,则应在道具树的种类层中加入新的种类,在把新道具放到此种类下面,同时更新服务器上数据库的道具信息,保持信息同步。通过这样的树结构,避免了每次玩家的角色浏览道具时都要访问数据库中数据,节省了时间,更便于对道具进行分类管理,查找道具的速度也更快。   通过对道具的信息管理举例,可以发现,数据结构对于游戏数据在获取之后,有组织的管理,读取信息的速度更快,从而提高游戏的运行速度。   二、玩家动作响应   玩家通过输入设备控制角色动作,经常同时控制运动动作和攻击动作。玩家同时输入多个动作的速度极快,需要系统快速响应。无论何种动作,众所周知都动作都是由线程来控制,多个动作同时提交等于向系统提交了多个线程。玩家希望多个动作能够同时运行,但对于系统而言,线程不能同时运行。因为系统响应每个线程的时间比较短,给玩家的感觉是同时响应的,实际上采用的是并发的方式。合理的安排线程运行的顺序,便于系统的调度,角色能够快速展现玩家输入的动作。可以按照玩家输入的动作到达系统的时间为线程排序,用队列存储线程。先到达的排在队头,后到达排在队尾。队列的特征为先进先出,因此,用此种结构组织线程的时候,系统直接调出队头的线程进行运行,节省了查找的时间。   随之而来的问题就是采用何种队列的存储结构?如果采用循环队列的结构,就需要预先知道大概需要的存储区大小,但是玩家随时都会输入新的动作,无法得知所需存储区的大小,那么可以采用链队列来存储玩家的动作线程更加适合。当有新的动作来时,可以将为其申请任意的空间存储,只需把地址告知之前的队尾,新的动作就顺利加入了队列。采用链队列的方式调度动作线程,使角色的动作展现更加协调,系统响应速度明显提高。通过角色动作线程调度举例,可以看到数据结构对于角色的动作同样可以进行管理,进一步提高游戏运行的速度。   三、规则实现   不管是何种游戏,游戏规则是游戏设计的核心,游戏规则的好坏不但会影响到玩家对游戏的兴趣程度,同样会影响到游戏的运行速度。制定了好的游戏规则后,如何实现就是难题,这就要求为其设计性能较好的算法。以连连看游戏为例,两个同样的图像选择后满足三根以内折线联通就可以消掉。满足条件的连线方式可能有多种,使用最短路径连接消除会大大提高游戏运行的速度,关键是如何找到最短路径?   因为算法要基于特定的存储结构,所以首先应解决存储结构的问题。将连连看的界面顶点进行存储,因为其具有顶点排列具有数据结构中二维矩阵的特点,将顶点采用二维矩阵方式的存储,而不是采用图的结构存储。界面中顶点包括图片顶点和非图片顶点,对于非图片顶点二维数组单元对应值为0;应为图片的种类的是固定的,给每个种类赋值,值均大于1,每个图片顶点的二维数组单元对应的值为其种类的值。由此可以看到,二维矩阵存储各个顶点信息后,找寻两个相同图片可消除的问题就,类似于小老鼠走迷宫的问题。将连连看的连线规则应用进小老鼠走迷宫的问题,假设选中两张相同图片对应的顶点分别是vij和vkl,在找路径的同时要记录已经有的折线数,一旦超出三条就结束查找。改进后算法如下:   将适当的算法应用于连连看的规则中,快速找到最短路径,并在在随时消除掉图片后,更新最短路径,且部分更新,提高程序的运行速度。由此可见,数据结构中的算法可以帮助在游戏实现其规则的同时降低程序复杂度,提高工作效率,加强了游戏的可玩性。但应用时数据结构的算法切忌照搬照抄,必须结合游戏的实际状况进行选择、改进,因为最终目的就是要提高游戏的工作效率。   经过上述讨论,可以发现数据结构适合于网络游戏程序开发的各个方面,使用时应灵活多变。如果为了引入某种错误的数据结构,使得程序变得复杂,反而会影响游戏的速度,使得玩家对游戏丧失兴趣。例如数据的处理应先观察各类数据的结构特点及组织规律,采用合适的逻辑结构以及便于操作的存储结构。存储结构通常分为顺序存储和链式存储,结合数据操作特性选择最适合当前游戏的。对于角色的动作,可以利用数据结构的特殊线性表结构,便于调度,从而使动作在画面上更逼真协调。对于游戏规则,首先要根据游戏的类型进行选择,依据规则的要求选择合适的数据结构,并且找到高效的算法,提高游戏的可玩性,提升运行效率。数据结构不仅仅应用于本文中的所提到的几方面,随着研究的深入,将会发现其更多的用途。总之,合理的使用数据结构的相关知识,将会提高网络游戏程序的整体性能,给玩家以全新的游戏体验。   参考文献:   [1]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,1997.   [2]王红梅,胡明,王涛.数据结构[M].北京:清华大学出版社,2011.   [3]韦斯(Weiss,M.A.).数据结构与算法分析[M].冯舜玺.北京:机械工业出版社,2009.   [4]韩东勋.网络游戏Server编程[M].马晓阳,刘娟.北京:电子工业出版社,2009.   [作者简介]王佳婧(1982.10-),女,籍贯:吉林省吉林市,职务:教师,职称:助教,学位:硕士,研究方向:计算机应用技术。
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。2020年什么移动应用最赚钱?当然是游戏了!
近日,市场研究公司App Annie发布的最新报告显示,到2020年时,移动应用市场规模将达到1890亿美元,较去年的700亿美元增长170%。这段时间内,用户花在应用上的时间预计将增长114%,游戏将占据应用商店收入的55%。随着用户花在购物和打车应用上的时间预计将增长两倍,其它应用类别的收入也将快速增长。
“目前,应用程序开发商来自于各行各业,不仅包括游戏工作室和媒体和娱乐公司,而且还包括银行、零售商、航空公司、打车服务公司以及政府机构等等。”上述报告称,“为了全面利用应用程序经济的超常规发展,开发商需要洞察未来的市场商机,并规划各种商业应用情境,包括产品发布、业绩目标、国际扩张以及证券投资组合管理。”
到2020年,应用程序内广告收入和应用商店营收均将会超过它们在2015年的总和。这两种收入都会获得长足发展,广告收入的发展速度将会超过应用商店,它的占比将从58%增长到62%。
而推动它们发展的两个关键因素就是,用户花费在应用程序上的时间明显增加(在过去两年中增长了一倍),以及全球和平板电脑用户数量将会在2020年增加一倍,增加到62亿。
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点

我要回帖

更多关于 数据结构有多重要 的文章

 

随机推荐