摘要: 1.简介 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为"先进先出"(FIFO—first in first out)的线性表。 对于顺序队列: 队列空的条件:front=rear 队列满的条件: rear - front = MAXSIZE 对于循环队列: 队列空的条 阅读全文
posted @ 2013-10-16 15:53 常想一二,不思八九 阅读(192) 评论(0) 推荐(0)
摘要: 1.基本概念 首先系统或者数据结构栈中数据内容的读取与(压入push和 弹出pop)是两回事!插入是增加数据弹出是删除数据 ,这些操作只能从栈顶即最低地址作为约束的接口界面入手操作 ,但读取栈中的数据 是随便的 没有接口约束之说。很多人都误解这个理念从而对栈产生困惑。[1]而 系统栈在计算机体系结构中 又起到一个跨部件交互的媒介区域的作用 即 cpu 与内存的交流通道 ,cpu只从系统给我们自己编写的应用程序所规定的栈入口线性地读取执行指令, 用一个形象的词来形容它就是pipeline(管道线、流水线)。cpu内部交互具体参见 EU与BIU的概念介绍。 栈作为一种数据结构,是一种只能在一端进行 阅读全文
posted @ 2013-10-16 15:25 常想一二,不思八九 阅读(140) 评论(0) 推荐(0)
摘要: 约瑟夫问题栈 问题描述 15个教徒与15个非教徒在深海遇险,必须将一半的人投入大海,其余的人才能幸免于难,于是想到一个方法,30个人围成一圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环直到余15个人为止,问怎么样排法,才能使每次投入大海的都是非教徒? 循环链表实现 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication5 { class CirculLinkedList { //元素个数 privat. 阅读全文
posted @ 2013-10-16 14:53 常想一二,不思八九 阅读(220) 评论(0) 推荐(0)
摘要: 一.线性表 线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。 1.1结构 线性表是一种常用的数据结构,以下介绍线性表及其顺序存储,并对栈和队列及它们的顺序实现给出了详细的设计描述。 在实际应用中,线性表都是以栈、队列、字符串等特殊线性表的形式来使用的。由于这些特殊线性表都具有各自的特性,因此,掌握这些特殊线性表的特性,对于数据运算的可靠性和提高操作效率都是至关重要的。 线性表是一个线性结构 阅读全文
posted @ 2013-10-15 17:15 常想一二,不思八九 阅读(548) 评论(0) 推荐(0)
摘要: 一.算法的评价指标 1.时间复杂度算法的时间复杂度是指执行算法所需要的时间。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。 T(n)=Ο(f(n)) 因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度 2.空间复杂度算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。 (S(n)=O(f(n)))1>算法本身占用的空间 2>算法的运行时占用的空间 3>算法运行时临时占用的空间 3.正确性 算法的正确性 阅读全文
posted @ 2013-10-15 15:07 常想一二,不思八九 阅读(287) 评论(0) 推荐(0)