当前位置:首页 - 第125页

08月18日

有哪些研究数据结构的好的方法?

发布 : xiaohuanglv | 分类 : 数据结构精品文章 | 评论 : 0 | 浏览 : 2481次
有哪些研究数据结构的好的方法?

研究数据结构是为了编写程序,编写程序是为了解决问题。用计算机求解一个现实问题,一般可用以下的问题求解模型加以描述:现实问题→数学模型→算法→程序→解也就是说,首先要从现实问题出发,抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后根据此算法编出程序,经过测试、排错、运行直至得到最终的解答。(现实)问题、数学模型、算法和程序是问题求解过程中出现的四个不同的概念。问题(problem):从直觉上讲,问题无非是一个需要完成的任务,即对应一组输入有一组相应的输出。在问题的定义中不应包含有关怎样解决该问题的限制。只有在问题被准确定义并完全理解后才有可能研究问题的解决方法。然而在问题的定义中应该包含对所有解决方案所需要的资源(比如说,计算机的主存储器和磁盘空间以及运行时间)的限制。数学模型(

08月18日

什么是算法? 算法的5个基本特性是什么? 算法设计的要求?

发布 : xiaohuanglv | 分类 : 数据结构精品文章 | 评论 : 0 | 浏览 : 4279次

算法的定义通常,定义算法为"为解决某一特定任务而规定的一个指令序列"。算法的5个基本特性①有输入。一个算法必须有0个或多个输入。它们是算法开始运算前给予算法的量。这些输入取自于特定的对象的集合。它们可以使用输入语句由外部提供,也可以使用赋值语句在算法内给定。②有输出。一个算法应有一个或多个输出,输出的量是算法计算的结果。③确定性。算法的每一步都应确切地、无歧义地定义。对于每一种情况,需要执行的动作都应严格地、清晰地规定。例1:void fa( ){ int x=5,y=10; z=x+++y;//解释为:x+(++y)?(x++)+y?printf("%d,%d,%d",x,y,z);}void 

08月18日

数据结构之线性表-基本概念和术语汇总

发布 : xiaohuanglv | 分类 : 数据结构精品文章 | 评论 : 0 | 浏览 : 2536次
数据结构之线性表-基本概念和术语汇总

1、线性关系如果把这两个变量分别作为点的横坐标与纵坐标,其图象是平面上的一条直线,则这两个变量之间的关系就是线性关系。从逻辑来讲,线性表的数据元素之间存在‘一对一’的逻辑关系,即为数据关系。2、线性表的长度n为线性表中包含的数据元素的个数,即为线性表的长度。长度为0的表称为空表,空表不包含任何数据元素。3、数据的逻辑结构从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的。4、数据的存储结构是逻辑结构用计算机语言的实现(亦称为映象),它依赖于计算机语言。对机器语言而言,存储结构是具体的。一般,只在高级语言的层次上讨论存储结构。5、顺序存储方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示称为顺序存储结构(Sequenti

08月18日

数据结构经典面试题:在字符串中找到出现频率大于50%的那个字符

发布 : xiaohuanglv | 分类 : 数据结构精品文章 | 评论 : 0 | 浏览 : 2815次
数据结构经典面试题:在字符串中找到出现频率大于50%的那个字符

问题描述:在某个字符串中(字符串可能很长,比如有几千万个字符),请找出某个出现频率大于50%的那个字符。例如:在字符串"aabcdaa"中,字符串长为7,字符'a'出现了4次,其出现频率大于50%,因此'a'就是最终要输出的字符。问题分析:思路1:解决这个问题最简单的方法就是遍历一遍字符串,针对每个字符都统计出其出现的次数,最后再遍历一遍这些次数,看哪个字符的次数超过了总次数的50%。该方法的优点是思路简单明了,缺点是额外的存储空间耗费大,算法时间复杂度高。思路2:首先对这个字符串中的字符按照某种次序排序(比如字符的字典序),得到一个有序的字符串,显而易见,该字符串中间的那个字符一定就是我们要找的那个出现频率超过50%的字符。该方法的优点是

08月18日

数据结构经典面试题:多种方法实现字符串循环移位

发布 : xiaohuanglv | 分类 : 数据结构精品文章 | 评论 : 0 | 浏览 : 3306次
数据结构经典面试题:多种方法实现字符串循环移位

问题描述:  要求在时间复杂度和空间复杂度分别为O(n)和O(1)的条件下把一个长度为N的字符串循环左移M位,例如将长度为9的字符串"123456789"循环左移4位后得到字符串"567891234"。程序的输入为N(字符串长度)和M(循环左移的位数),输出为循环移位后的字符串。解题思路:  乍一看此题,一般人都会这样想:先把字符串的前M个字符复制到临时数组变量中,然后将余下N-M个字符都分别向左移动M位,再把临时数组变量中的M个字符粘到N-M个字符的末尾。是否很简单呢?但是,这种做法的空间复杂度是O(n),不符合要求。    这样一来,二般人出现了,他们会这样想:

08月18日

数据结构之绪论-基本概念和术语汇总

发布 : xiaohuanglv | 分类 : 数据结构精品文章 | 评论 : 0 | 浏览 : 2480次
数据结构之绪论-基本概念和术语汇总

1、顺序存储方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示称为顺序存储结构(SequentialStorageStructure)。2、链接存储方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系由附加的指针字段表示。由此得到的存储表示称为链式存储结构(LinkedStorageStructure)。3、索引存储方法通常在储存结点信息的同时,还建立附加的索引表。索引表由若干索引项组成。若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引(DenseIndex)。4、原子类型其值不可分解。通常是由语言直接提供。5、结构类型其值可分解为若干个成分(或称为分量)。6、抽象数据类型(Abstract

08月18日

数据结构学习心得

发布 : xiaohuanglv | 分类 : 数据结构精品文章 | 评论 : 0 | 浏览 : 5877次
数据结构学习心得

   山不在高,有仙则灵;水不在深,有龙则灵;要学好数据结构,有数据结构学习网才行!首先,恭喜您发现了这个网站:一个神奇的学习数据结构的网站!其次,感谢您打开这个网页阅读这篇文章,实在太感谢啦!再次,正在激动中......哽咽了。还是让我先来介绍一下我自己吧:我就是江湖上人见人爱、花见花开、车见车载,人称上天入地、无所不能、英俊潇洒、风流倜傥、玉树临风、学富五车、高大威猛、拥有千万粉丝、迷倒万千少女,号称一朵梨花压海棠的玉面小黄驴,帅到掉渣!一个见过我的女孩儿曾对我说:“如果世界只剩下十分钟的话,我会和你一同回忆你帅时的样子;如果世界只剩下三分钟的话,你要再摆一下你最最最帅的造型给我看;如果世界只剩下一分钟的话,我会对你对你说60次—小黄驴,你真帅!”还有一个

08月18日

数据结构之栈和队列-基本概念和术语汇总

发布 : xiaohuanglv | 分类 : 数据结构精品文章 | 评论 : 0 | 浏览 : 2714次
数据结构之栈和队列-基本概念和术语汇总

1、队尾允许插入的一端称为队尾,队尾元素的位置由rear指出;2、队头允许删除的一端称为队头,队头元素的位置由front指出。3、循环队列把队列设想成头尾相连的循环表,使得数组前部由于删除操作而导致的无用空间尽可能得到重复利用。这样的队列称之为循环队列。4、队列的链式存储结构队列的链式存储结构是用一个线性链表表示一个队列,指针front 与rear 分别指向队头元素与队尾元素所在的链结点。5、后缀表达式运算符紧跟在两个操作数之后的表达式叫后缀表达式。6、假溢出系统作为队列用的存储区还没有满,但队列却发生了溢出,我们把这种现象称为"假溢出"。7、堆栈堆栈是一种只允许在表的一端进行操作和删除操作的线性表。特点:1)先进后出(FILO)的线性表。2)或后进先出(&n

08月18日

有哪些算法设计与方法?

发布 : xiaohuanglv | 分类 : 数据结构精品文章 | 评论 : 0 | 浏览 : 2392次

要制定一个算法,一般要经过设计、确认、分析、编码、检查、调试、计时等阶段,因此学习计算机算法必须涉及这些方面的内容。在这些内容中有许多都是现今重要而活跃的研究领域。为便于区别,把算法学习的内容分成五个不同的方面:(一)何设计算法设计算法的工作是不可能完全自动化的。本书是要使读者学会已被实践证明是有用的一些基本设计策略。这些策略不仅在计算机科学,而且在运筹学、电气工程等多个领域都是非常有用的,利用它们已经设计出了很多精致有效的好算法。读者们一旦掌握了这些策略,也一定会设计出更多新的、有用的算法。(二)如何表示算法语言是交流思想的工具,设计的算法也要用语言恰当地表示出来。本书基本采用结构程序设计的方式,选择了一种名为SPARKS的程序设计语言来简单明了地表示算法。至于结构程序设计的内容本书并不打

08月18日

怎样判断两个链表相交并找到第一个相交点(微软数据结构面试题)

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 2787次
怎样判断两个链表相交并找到第一个相交点(微软数据结构面试题)

1、给出两个单向链表的头指针pHead1和pHead2,判断这两个链表是否相交。假设两个链表均不带环。如果两个链表相交于某一节点,那么在这个相交节点之后的所有节点都是两个链表所共有的。也就是说,如果两个链表相交,那么最后一个节点肯定是共有的。先遍历第一个链表,记住最后一个节点,然后遍历第二个链表,到最后一个节点时和第一个链表的最后一个节点做比较,如果相同,则相交,否则不相交。时间复杂度为O(len1+len2),因为只需要一个额外指针保存最后一个节点地址,空间复杂度为O(1)。2、给出一个单向链表的头指针pHead,判断链表中是否有环。链表中有环,其实也就是自相交。我们用两个指针pslow和pfast从头开始遍历链表,pslow每次前进一个节点,pfast每次前进两个结点,若存在环,则psl

网站分类

标签列表

最近发表

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

本站资源大部分来自互联网,版权归原作者所有!